怎样通过编程方式实现DAQmx设备的重置或自检

更新 Jan 17, 2024

环境

软件

  • LabVIEW NXG
  • LabVIEW
  • LabWindows/CVI

驱动

  • NI-DAQmx

程式语言

  • C# .NET
  • Visual Basic .NET

我想通过编程的方式实现设备的自检或重置,就像在Measurement & Automation Explorer (MAX)中一样,但我找不到相应的函数。我在哪里可以找到这些函数,如何在程序中实现重置或自检?

函数位置

在NI-DAQmx 8.9及更高版本中,您可以在LabVIEW中使用DAQmx自检函数或DAQmx重置函数。您还可以通过我们对LabWindows / CVI或ANSI C的支持以及使用C#或Visual Basic的.NET来调用类似的DAQmx重置和自检函数。

LabVIEW NXG:

DAQmx重置VI和自检函数位于程序框图中的硬件接口»NI-DAQmx»设备配置选板中。

LabVIEW的:

DAQmx驱动程序:
DAQmx重置VI和自检函数位于程序框图的测量I/O»NI-DAQmx»设备配置选板中。

传统DAQ驱动程序:
设备重置函数位于程序框图的测量I/O»数据采集»校准和配置选板中。

LabWindows / CVI和ANSI C:

DAQmx重置和自检函数可在库»NI-DAQmx库»高级»设备控制中找到

DAQmx重置:
函数原型: int32 DAQmxResetDevice (const char deviceName[])
示例:int errorResult = DAQmxResetDevice("Dev1");

DAQmx自检:
函数原型:int32 DAQmxSelfTestDevice (const char deviceName[]) 
示例:int selfTestResult = DAQmxSelfTestDevice("Dev1");

C#.NET:

要在C#中执行DAQmx重置或自检,您必须首先拥有DAQ设备的Device对象,然后才能调用Device对象上的重置或自检功能。

DAQmx重置:
函数原型:void Device.Reset();
示例:
   Device dev = DaqSystem.Local.LoadDevice("Dev1");
   dev.Reset();

DAQmx自检:
函数原型:void Device.SelfTest();
示例:
   Device dev = DaqSystem.Local.LoadDevice("Dev1");
   dev.SelfTest();

Visual Basic.NET:

与C#.NET类似,在Visual Basic中执行DAQmx重置或自检.NET,您需要一个Device对象来调用重置和自检函数。

DAQmx重置:
函数原型:Public Sub Reset()
示例:
   Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
   dev.Reset()

DAQmx自检:
函数原型:Public Sub SelfTest()
示例:
   Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
   dev.SelfTest()

功能实现

重置设备函数通常用于程序的开头或结尾。如果在程序中间使用重置设备函数,它将立即中止与设备关联的所有正在进行的任务,断开所有路由,并将设备返回到初始化状态。中止任务会立即终止当前正在进行的操作,例如读取或写入。中止任务会使任务进入不稳定但可恢复的状态。要在NI-DAQmx中恢复任务,请使用DAQmx Start重新启动任务或使用DAQmx Stop重置任务而不启动它。重置过程是异步的,函数在重置完成之前返回。有关这些功能的更多信息,请参阅NI-DAQmx帮助文件。


LabVIEW中的示例代码

下面是用LabVIEW编写的示例代码,它将重置设备放在程序的末尾。
  1. DAQmx任务在主循环之前初始化,并由Task In控件表示。在此示例中省略了初始化步骤。有关如何创建和设置DAQmx任务的更多信息,请参阅: 了解NI-DAQmx中的10个函数并处理80%的数据采集应用程序
  2. 启动任务并进入Acquisition Loop。
  3. Acquisition Loop开始采集。在该示例中,数据采集被设置为从一个通道连续读取N个样本。如果用户按下停止按钮或发生错误,则采集循环终止,程序进入Reset Device Polling循环。
  4. Reset Device Polling循环清除当前错误并重置设备。循环运行直到DAQmx重置设备VI成功。
  5. 在再次启动之前停止当前的DAQmx任务,因为启动已启动的DAQmx任务会生成错误。
  6. 程序完成后,任务将被清除,任何剩余的错误都由Simple Error Handler VI处理。
(可选的:)
可以添加DAQmx自检VI,以测试设备在复位后是否正确响应。

Additional Information

虽然在8.9之前的NI-DAQmx中没有自检VI或函数,但使用复位设备函数是另一种选择。它提供与MAX中的Self-Test大致相同且范围稍广的功能。如果您正在因为中止或崩溃的应用程序而无法正常关闭和释放引用时,添加此重置函数到代码开头或许可以解决您的问题。