NI-IMAQdxでプログラム的に属性を取得および設定する

更新しました Oct 18, 2022

環境

ソフトウェア

  • LabVIEW

ドライバ

  • NI-IMAQdx
  • NI-IMAQ

その他

IMAQ for IEEE 1394

  • NI-IMAQdxを使用して、明るさ、シャッター速度、ゲインなどのカメラ属性をプログラム的に設定するにはどうすればよいですか?
  • 最近、NI-IMAQ for IEEE 1394からNI-IMAQdxに移行しました。以前は、IMAQ1394GetAttribute(テキスト言語)、またはIMAQ 1394プロパティノードでAttrプロパティを使用していました。NI-IMAQdxでこれらのオプションはどこにありますか?

下記の情報を参照して、カメラ属性をLabVIEWおよびテキストベースの言語でプログラムで取得、または設定します。
 

LabVIEWの場合

LabVIEWでカメラ属性を設定するには、IMAQdxプロパティノードを使用します。IMAQdxプロパティノードを見つける方法は、以下のとおりです。 
  • 関数パレットのビジョン&モーション>>NI-IMAQdxに移動します。
  • ブロックダイアグラムに一般的なプロパティノードを配置して右クリックし、クラスを選択>>IMAQdxに移動します。
プロパティノードの設定方法の詳細については、NI-IMAQdx Concepts Helpドキュメント(NI-IMAQdx Concepts Help>>Using NI-IMAQdx in LabVIEW>>Acquisition Types>>Camera Attributes in LabVIEW)でCamera Attributes in LabVIEWを参照してください。リンクをクリックすると、ヘルプ文書のzipファイルがコンピュータにダウンロードできます。

GigE Visionカメラを使用している場合は、NI-IMAQdx Concepts Helpドキュメント(NI-IMAQdx Concepts Help>>Acquiring from GigE Vision Cameras>>Programmatically Controlling Camera Settings)で、>Programmatically Controlling Camera Settingsを参照してください。

下図は、カメラの輝度レベルを変更する方法の例をIMAQ 1394プロパティノードとIMAQdxプロパティノードで比較しています。


テキスト言語の場合

特定の属性値または設定を取得するには、IMAQdxGetAttribute関数呼び出しを使用します。属性の正確な名前または値が不明な場合は、IMAQdxEnumerateAttributes2およびIMAQdxEnumerateAttributeValuesを呼び出してこのデータを返すことができます。

利用可能な属性値の数が事前にわからない場合は、次の手順を行ってこの情報を取得できます。

  1. IMAQdxEnumerateAttributes2関数のattributeInformationArrayパラメータでNULLに設定して呼び出します。それにより、必要なサイズがcountに格納されます。
  2. 指定されたサイズでcountを割り当てます。
  3. 事前に割り当てられた配列を使用してこの関数を再度呼び出します。


IMAQdxEnumerateAttributeValues関数についても、listパラメータをNULLに設定することで同じ手順を行えます。このパラメータは、sizeで必要なサイズをsizeで格納します。これらの関数およびその他のテキストベース言語用IMAQdx関数に関する詳細については、National Instruments\NI-IMAQdx\DocsにあるNI-IMAQdx Function Reference Helpを参照してください。

Additional Information

NI-IMAQdxドライバを使用すると、文字列入力を使用してカメラ属性を動的に取得できます。この変更の理由は、IMAQ 1394ドライバでは、すべてのカメラがDCAMに準拠しており、特定の属性セットが存在したためです。IMAQdxドライバでは、さまざまな属性を持つ多くのカメラがサポートされています。したがって、機能セットリストを列挙する代わりに、ユーザが特定カメラの利用可能なプロパティを選択する必要があります。

 

LabVIEWを使用する際の追加トラブルシューティング

-1074360305 attribute not supported by the cameraというエラーが発生した場合、またはActiveAttributeプロパティに渡す文字列が不明な場合、IMAQdx Enumerate Attributes VIを使用して対象のAttributeに対する正しい文字列を抽出します。このVIを用いると、読み取りと書き込みのどちらが可能であるか、またどのようなデータタイプを受け入れ可能であるかという情報の正しい文字列の抽出が可能です。

IMAQdx Enumerat Attributes VIは、カメラの利用可能なすべてのプロパティを取得して、配列として出力します。表示されたプロパティはそのカメラ特有のものであり、IMAQdxプロパティノードの入力文字列として使用可能です。

これらの関数やLabVIEWのIMAQdx関数に関する詳細については、NI-IMAQdx VI Reference Helpを参照ください。NIサンプルファインダのGrab and Attribute Setup.viを参照してください。リンクをクリックすると、ヘルプドキュメントのzipファイルがコンピュータにダウンロードされます。