ni-daqmx是national instruments现阶段的数据采集驱动,ni-daqmx集成了全新的驱动架构和api,用于控制national instruments daq设备。
本文演示如何通过ni-daqmx提供的api来控制national instruments daq设备,实现数据采集任务。
为了方便大家学习,我们使用模拟的ni-daqmx设备来演示。它是使用ni measurement and automation explorer(max)中的ni-daqmx模拟设备选项创建的,其行为与真实设备相似。某些ni-daqmx设备无法在max中进行仿真。在许多情况下,可以模拟相似的设备来代替无法模拟的设备。
1)从national instruments官网www.ni.com下载ni-daqmx 20.0版本软件并安装;安装完毕ni-daqmx软件驱动包,在目录c:\users\public\documents\national instruments\ni-daq\examples\dotnet4.5下,存放ni-daqmx的常用例子,本例子项目的脚本基本上是参考这些例子编写的。
2)运行ni max设备管理软件,通过设备和接口节点,可以新建仿真设备。本演示使用“simdev1”仿真设备,采集电压数据。
ni-daqmx对于microsoft .netframework平台,提供了nationalinstruments.common.dll和nationalinstruments.daqmx.dll两个动态链接库,作为第三方使用ni-daqmx控制national instruments daq设备的应用程序接口。
其中nationalinstruments.common.dll动态库位于c:\program files (x86)\national instruments\measurement studio\dotnet\v4.0\anycpu\nationalinstruments.common 19.0.40\nationalinstruments.common.dll
nationalinstruments.daqmx.dll动态库位于c:\program files (x86)\national instruments\measurementstudiovs2012\dotnet\assemblies (64-bit)\current\nationalinstruments.daqmx.dll。
代码框架是c#版本的。
采集项目的开发环境可以用visualstudio,ni-daqmx软件安装后,在目录c:\users\public\documents\national instruments\ni-daq\examples\dotnet4.5下,存放ni-daqmx的使用例子。本文采用格西测控大师来构建,该软件可以快速构建用户界面,方便把采集到的数据用图表显示,类似labview软件。
本例子最终的效果图如下。
第一步,通过测控大师软件新建项目,在项目属性对话框中引用ni-daqmx的库nationalinstruments.common.dll和nationalinstruments.daqmx.dll;
第二步,建立变量容器“电压测量”,并把缓存capacity属性设置为10000;其下建立“电压”变量。
本例子用户界面用到的控件:linechart(曲线图)、tablegrid(数据表),combobox(通道列表),spineditbox(数字参数设置),button(按钮)。
关键配置:
linechart:chartseries属性(格式为“<系列名称 1>,<x变量名>,<y变量名>;<系列名称 2>,<x变量名>,<y变量名>;…“ ;本例子设置为:电压曲线图,序号,电压)
dataprovider属性:绑定“电压测量”
tablegrid:dataseries属性(格式为“<变量1名>,<列1名称1>; <变量2名>,<列2名称>;…“ ;本例子设置为:电压,电压)
datasource属性:绑定“电压测量”变量容器
“采集电压画面”设计完毕后,新建两个事件,分别是采集电压画面的loaded事件和btnstart按钮的click事件。
采集电压画面的loaded事件函数中初始化通道列表,btnstart按钮的click事件函数中执行数据采集。
脚本引用ni库的命名空间nationalinstruments和nationalinstruments.daqmx,即可直接使用动态库中的类。
主界面代码:
仪器厂商都会针对自己的仪器设备提供动态链接库,供第三方软件控制自家的仪器设备,类似ni这样的大厂更是有一整套完善的驱动库,ni-daqmx即是ni的全新的驱动架构和api,已经能够把复杂的底层逻辑隐藏起来,提供一组易于使用的面向对象类库供开发者使用,让开发者在短短的十几行代码即可完成数据的采集。
另外,格西测控大师软件也是一个开放的测控软件开发平台,该软件能够对测试流程进行组态,能够自定义任意通信协议进行设备通信,能够开发漂亮的用户操作界面等,比较适合用于数据采集和监控、设备仿真、通信协议监听和分析、通信协议一致性测试等领域。