使用NI-IMAQdx编程获取和设置属性

更新 Oct 18, 2022

环境

软件

  • LabVIEW

驱动

  • NI-IMAQdx
  • NI-IMAQ

其他

IEEE 1394的IMAQ

  • 如何使用NI-IMAQdx通过编程设置相机的属性,例如亮度,快门速度和增益等属性?
  • 我以前使用IMAQ 1394属性节点中的IMAQ1394GetAttribute for CAttr属性设置参数,而最近将用于IEEE 1394的NI-IMAQ模块改为NI-IMAQdx。请问我在哪里可以找到NI-IMAQdx中的这些选项呢?

请参阅以下信息,使用LabVIEW编程的方式和使用基于文本语言编程的方式设置摄像机属性。

使用LabVIEW编程

使用IMAQdx属性节点在LabVIEW中设置摄像机属性。要查找IMAQdx属性节点:
  • 导航到视觉与运动(Vision and Motion)功能调色板>> NI-IMAQdx
  • 在程序框图上的放置常规属性节点,右键单击并导航到选择类(Select Class) >> IMAQdx
有关如何配置属性节点的详细信息,请参阅NI-IMAQdx概念帮助文档中的LabVIEW中的摄像机属性 ( NI-IMAQdx概念帮助 >> 在LabVIEW中使用NI-IMAQdx >> 采集类型 >> LabVIEW中的摄像机属性 ) 。该链接可以下载帮助文档。

如果您使用的是GigE Vision相机,请参阅NI-IMAQdx概念帮助文档中的编程控制相机设置 ( NI-IMAQdx概念帮助 >> 从GigE Vision相机中获取 >>以编程的方式控制相机设置 )。

下图显示了如何配置通过IMAQ1394属性节点的方式与通过IMAQdx属性节点的方式更改摄像机亮度级别的示例。
 


 

使用基于文本的语言编程

调用IMAQdxGetAttribute函数来获取特定的属性值或设置。如果您不确定属性的确切名称或值,可以调用IMAQdxEnumerateAttributes2和IMAQdxEnumerateAttributeValues来返回此数据。

如果您事先不知道可用的属性值的数量,则可以通过完成以下步骤来获取此信息:

  1. 调用IMAQdxEnumerateAttributes2函数,并将属性信息数组(attributeInformationArray)参数设置为NULL。然后将必要的大小存储在计数(count)中 。
  2. 使用给定大小分配计数 (count)。
  3. 使用先前分配的数组再次调用此函数


您可以通过将列表(list)参数设置为NULL来执行与IMAQdxEnumerateAttributeValues相同的步骤,该参数存储大小所需的大小(size) 。有关将这些函数和其他IMAQdx函数用于基于文本的语言编程的更多信息,请参阅National Instruments\NI-IMAQdx\Docs下的NI-IMAQdx函数参考帮助。

Additional Information

NI-IMAQdx驱动程序允许使用字符串输入动态获取相机属性。这种改变的原因是,调用IMAQ 1394驱动程序,所有摄像机都符合DCAM并具有一组特定的属性。调用IMAQdx驱动程序,还有许多支持的摄像机具有不同的属性。因此,不是枚举特征的集合列表,而是用户必须为其特定的摄像机选择可用的属性。

使用LabVIEW编程时的其他故障排除

如果您收到错误信息:相机不支持-1074360305属性( error: -1074360305 attribute not supported by the camera),或者您不确定要传递给激活的属性(Active Attribute)的属性字符串时,请调用IMAQdx Enumerate Attributes VI提取有关属性的确切字符串的信息,无论该属性是否可读写或是否可作为输入接受的数据类型。

IMAQdx枚举属性VI填充了摄像机的所有可用属性,并可相应地编制索引。根据特定的摄像机显示出来的属性是属性节点接收引用的会话的一部分。

有关调用这些函数和LabVIEW编程的其他IMAQdx函数的更多信息,请参阅NI-IMAQdx VI参考帮助或参考NI示例查找器中的Grab和Attribute Setup.vi 。该链接可以下载帮助文档。