使用NI-IMAQdx搭配程式化的方式獲取和設定相機的屬性

更新 Oct 18, 2022

環境

軟體

  • LabVIEW

驅動程式

  • NI-IMAQdx
  • NI-IMAQ

其他

IMAQ for IEEE 1394

  • 如何使用NI-IMAQdx以程式化的方式設定我的相機屬性,例如亮度(brightness)、快門速度(shutter speed)和增益值(gain)等等?
  • 我最近將控制IEEE 1394相機的驅動程式從NI-IMAQ轉移到NI-IMAQdx。我以前可在C語言上使用IMAQ1394GetAttribute 或在LabVIEW上使用IMAQ 1394的屬性節點(property node)的Attr選項來控制相機屬性。現在,我該在NI-IMAQdx的哪裡可以找到類似的功能?

請參閱以下資訊,在LabVIEW和文本語言(text-based language)以程式化的方式設定相機的屬性。

使用LabVIEW

使用IMAQdx property node在LabVIEW中設置相機屬性。如何找到IMAQdx property node:
  • Vision and Motion功能表>> NI-IMAQdx
  • 放置一個一般的property node在block diagram上,右鍵點擊選擇您需要VAS軟體與相機溝通並擷取影像Select Class >> IMAQdx
有關如何配置相機的property node的詳細訊息,請參閱NI-IMAQdx Concepts Help文件中的Camera Attributes in LabVIEW (NI-IMAQdx Concepts Help >> Using NI-IMAQdx in LabVIEW >> Acquisition Types >> Camera Attributes in LabVIEW) 。該連結會下載一份幫助文件的zip檔到您的電腦上。

如果您使用的是GigE Vision相機,請參閱NI-IMAQdx Concepts Help文件中的Programmatically Controlling Camera Settings((NI-IMAQdx Concepts Help >> Acquiring from GigE Vision Cameras >> Programmatically Controlling Camera Settings)。

下圖顯示了在IMAQ1394 (Legacy) property node與IMAQdx property node上如何設定相機亮度等級的範例。

使用文本語言

使用IMAQdxGetAttribute函式來獲取特定的屬性值或設定值。如果您不確定某個屬性的確切名稱或值的範圍,可以調用IMAQdxEnumerateAttributes2和IMAQdxEnumerateAttributeValues函式來查詢。

如果您先前不知道某屬性的數值的可用範圍,你可以完成以下步驟來得該資訊:

  1. 調用IMAQdxEnumerateAttributes2函式,並將attributeInformationArray參數設置為NULL。接著它會將attributeInformationArray所需要的記憶體大小存在count內。
  2. 依據count的大小來分配attributeInformationArray的記憶體。
  3. 利用分配好的array再次調用此函式。


您可以用相同的步驟來使用IMAQdx的IMAQdxEnumerateAttributeValues函式,差別是改為設定list參數並將值設定為NULL,並將Array所需要的記憶體大小存在size裡 。有關如何在文本語言上調用這些函式和其他IMAQdx函式的更多訊息,請參閱National Instruments\NI-IMAQdx\Docs下的NI-IMAQdx Function Reference Help。

Additional Information

NI-IMAQdx驅動程式允許使用字串輸入的方式來動態獲取相機屬性。這樣改變的原因是,原先使用IMAQ 1394驅動程式,所有的相機都需符合直接晶片接合(Direct Chip Attach Module,DCAM)的規範並具有一組特定的屬性。現在的IMAQdx驅動程式支持更多不同種類的相機,每種相機都具有不同的屬性可選。因此,與其繼續使用列舉(Enum)列表,不如讓客戶輸入字串來獲取特定的相機屬性。

使用LabVIEW時額外的Troubleshooting 步驟

如果您收到error: -1074360305 attribute not supported by the camera或者您不確定要傳遞哪個屬性字串給Active Attribute property時,請使用IMAQdx Enumerate Attributes VI來提取有效屬性字串的確切訊息,像是該屬性是可讀或可寫的或者它可以接受什麼資料類型的輸入。

IMAQdx Enumerate Attributes VI 列出所選相機的所有可用屬性,並可以被客製化地編制順序。根據property node接收的reference來判定是什麼相機並且顯示相對應的屬性。

有關在LabVIEW上使用這些函式和其他IMAQdx的函式的更多資訊,請參閱NI-IMAQdx VI Reference Help 或NI Example Finder中的Grab and Attribute Setup.vi 。該連結會下載一份幫助文件的zip檔到您的電腦上。