Linuxで複数のインスタンスでpylonベースのアプリケーションを起動する際発生する可能性のある問題#
まれに使用ケースとして、複数のカメラを管理するためにアプリケーションを複数のインスタンスで実行する必要が生じる場合があります。
すべてのカメラが同じモデルであり、同じファームウェアバージョンを使用しており、アプリケーションのすべてのインスタンスが同時に起動する場合、ファイルアクセス違反により GenICam が例外をスローします。
その理由は、同じカメラモデルとファームウェアを使用している場合、GenICam キャッシュファイルに同じ名前が使用されるためです。
Windows 版 pylon で使用されている GenICam のバージョンはこの問題に対して保護されていますが、Linux 版は保護されていません。
回避策 1#
最初にアプリケーションを単一のインスタンスで起動し、カメラの XML キャッシュファイルをディスクに書き込みます。特定のカメラの GenICam キャッシュファイルがハードディスクに存在していれば、読み取りアクセスのみが許可され、例外は発生しなくなります。
回避策 2#
オペレーティングシステムが ROM にインストールされている場合、システム再起動後に XML キャッシュファイルが失われるため、上記の回避策は機能しません。
この場合、各アプリケーションインスタンスに個別の GenICam キャッシュディレクトリを割り当てることでこの問題が解決します。例:
GENICAM_CACHE_V2_3=/home/$username/Genicam_cache1 ./GrabGENICAM_CACHE_V2_3=/home/$username/Genicam_cache2 ./Grab
情報
使用 GENICAM_CACHE_V2_3 pylon 4 の場合、および GENICAM_CACHE_V3_0 pylon 5 以降の場合。ターゲットディレクトリが存在し、ユーザーに書き込み権限があることを確認してください。