图2中4个CLF节点分别用来调用OpenUA300,minitz,readdataz,CloseUA300这四个函数。
对于LabVIEW与DLL函数之间传递数组类型数据,无论采用何种数组格式进行传递,都需要在Lab-VIEW中为数组预先分配空间,也就是给该数组开辟缓存,不然会导致程序崩溃。该程序在采集数据前预先为其初始化一个二维数组空间,为了使采集到的数据在数组中的位置始终对应于采样的每一通道,初始化数组空间时设置每通道采样点数为行,采集通道数为列,这样数据从采集卡FIFO存入缓存时,每一列对应每一通道的数据,省去了后续通过循环索引出各通道数据的繁琐。
为了实现数据的连续采集,系统应保持在循环状态,设计中采用WhiIe循环来实现这一功能,但是Lab-VIEW在执行While循环时,如果用户没有给它设定循环时间间隔,则它将以CPU的极限速度运行。这样可能会导致整个LabVIEW程序看上去像死机一样,所以需要给While循环加上一个指定的时间间隔。在采集前首先设置采样通道、采样频率、采样点数、增益和数据传输方式等参数,该接口驱动的前面板见图3。
4 结 语
由此可以看出,在LabVIEW中调用动态链接库函数,来驱动普通数据采集卡的技术,显示出了Lab-VIEW强大的外部程序接口能力。应用此方法设计数据采集系统一方面可充分利用LabVIEW的界面友好、图形显示和虚拟仪器强大的开发功能等优点;另一方面又能大大降低系统的开发成本,可以使LabVIEW在对硬件的支持上有一个质的飞跃。通过LabVIEW的外部程序接口CLF节点访问动态链接库来调用Windows标准库函数,使得LabVIEW支持的数据采集板卡范围突破了限制,同时也为Lab-VIEW访问底层函数提供了一种新的思路。