I/O接口设备驱动设计方案
1 引言
虚拟仪器系统的硬件平台由i/o接口设备和计算机构成(如图1所示),i/o接口设备是对外获取信号的通道,为了能使计算机能够对i/o接口设备有效地进行控制,就要考虑系统中i/o接口设备的驱动问题。
图1 虚拟仪器的硬件构成
在labview中,用软件驱动i/o接口设备,可分以下两种情况:
(1) labview支持的io设备的驱动
ni公司是以研制开发先进的i/o产品起家的,因此,ni在推出labview时已经考虑到了自家产品在labview中的的驱动问题,提供了专用的子vi形式的驱动程序库,图2是用作模拟输入的驱动程序。
图2 模拟输入驱动程序
labview提供了max(measurem -ent & automation)软件,只要计算机中安装了device driver,当i/o设备插入计算机时就能够被自动识别,并且可以用max工具对其进行配置。图3是在计算机中插入ni公司的板卡pci-6527后启动max的画面。
图3 max自动识别ni的i/o设备
对于这类labview直接支持的i/o设备,调用labview中的相应驱动程序模块就可以实现板卡的所有功能。
(2) labview不支持的io设备的驱动
ni的io产品由于有现成的驱动可供开发者使用,在使用中具有驱动方便的优势,但是价格昂贵,实际系统中很可能选择使用非ni的io设备,这类设备在ni提供的驱动程序库中没有相应的驱动程序。对于这类labview不直接支持的i/o设备,我们该如何实现对其驱动呢?
一般i/o设备都带有dll驱动函数库以及相应的lib文件和.h头文件,而labview恰好提供了调用动态链接库的手段——clf节点(call library function,位于labview功能模板中的advanced子模板中)。基于这种状况,使用clf节点便是我们驱动此类设备的首选方法。下面以北京迪阳公司的任意波形发生卡lai200a2为例来说明clf在仪器驱动中的使用。
1 引言
虚拟仪器系统的硬件平台由i/o接口设备和计算机构成(如图1所示),i/o接口设备是对外获取信号的通道,为了能使计算机能够对i/o接口设备有效地进行控制,就要考虑系统中i/o接口设备的驱动问题。
图1 虚拟仪器的硬件构成
在labview中,用软件驱动i/o接口设备,可分以下两种情况:
(1) labview支持的io设备的驱动
ni公司是以研制开发先进的i/o产品起家的,因此,ni在推出labview时已经考虑到了自家产品在labview中的的驱动问题,提供了专用的子vi形式的驱动程序库,图2是用作模拟输入的驱动程序。
图2 模拟输入驱动程序
labview提供了max(measurem -ent & automation)软件,只要计算机中安装了device driver,当i/o设备插入计算机时就能够被自动识别,并且可以用max工具对其进行配置。图3是在计算机中插入ni公司的板卡pci-6527后启动max的画面。
图3 max自动识别ni的i/o设备
对于这类labview直接支持的i/o设备,调用labview中的相应驱动程序模块就可以实现板卡的所有功能。
(2) labview不支持的io设备的驱动
ni的io产品由于有现成的驱动可供开发者使用,在使用中具有驱动方便的优势,但是价格昂贵,实际系统中很可能选择使用非ni的io设备,这类设备在ni提供的驱动程序库中没有相应的驱动程序。对于这类labview不直接支持的i/o设备,我们该如何实现对其驱动呢?
一般i/o设备都带有dll驱动函数库以及相应的lib文件和.h头文件,而labview恰好提供了调用动态链接库的手段——clf节点(call library function,位于labview功能模板中的advanced子模板中)。基于这种状况,使用clf节点便是我们驱动此类设备的首选方法。下面以北京迪阳公司的任意波形发生卡lai200a2为例来说明clf在仪器驱动中的使用。
2 举例
lai200a2是一款任意波形发生卡,该卡有一路波形输出,可实现正弦波、方波、三角波、锯齿波、ttl、白噪声、高斯噪声、梯形、指数、扫频等常规波形,用户可以设置波形的幅度、频率、偏置量等参数。lai200a2提供lai200.dll、lai200.lib、lai200.h文件供用户进行二次开发。以下简单介绍lai200.dll中的主要函数:
(1) 板卡自检函数
int lai200_autocheck(unsigned char *numbers,unsigned short int cardname);
功能描述:初始化板卡
入口参数:cardname: 卡地址
出口参数:numbers isa卡保留,无用。
函数返回:1,自检成功 2,自检失败
(2) 计算规则波形数据函数
void lai200_cacuwavepara(
int wavetype,
int cycles,
double frequency,
double amplitude,
double offset,
int duty,
unsigned int *mdots,
double *mdacclk,
double *mwavedata
);
功能描述:计算规则波形
- 采用LabVIEW的近红外测量方案 (01-18)
- 基于虚拟仪器的电网综合参数测控系统(06-21)
- 基于虚拟仪器技术设计馆藏室温湿度监控系统(10-11)
- 利用虚拟仪器设计的网络化温室测控系统(12-08)
- 基于虚拟仪器的CANopen协议监控面板设计(07-02)
- 用DDS芯片AD9835开发的精度频率信号发生器(06-24)