2024年4月24日发(作者:)
1. 引言
研华公司是台湾和中国大陆工业电脑产品最大的供应厂商,其
PC&Web-based数据采集和控制产品更是以优良的性价比获得了众多的客户的青
睐。32位DLL驱动程序是研华为诸如VC,VB,DELPHI,Borland C++,C++ Builder
等高级语言提供的接口,通过这个驱动程序,编程人员可以方便的对硬件进行编
程控制。该驱动程序覆盖了每一款研华的数据采集卡以及MIC-2000、ADAM-4000
和ADAM-5000系列模块,应用极为广泛,是编制数据采集程序的基础。本文是在
实际编写动态数据采集程序中经验的积累,对利用32位驱动程序有实用价值。
2. 32
位驱动程序概览
32位驱动程序主要包括10类函数及其相应的数据结构,这些函数和数据结
构在Adsapi 中实现。这10类函数分别是:
Device Functions设备函数
Analog Input Function Group模拟输入函数组
Analog Output Function Group模拟输出函数组
Digital Input/Output Function Group数字输入/输出函数组
Counter Function Group计数器函数组
Temperature Measurement Function Group温度测量函数组
Alarm Function Group报警函数组
Port Function Group端口函数组
Communication Function Group通信函数组
Event Function Group事件函数组
可以把这10类函数分为两个部分:设备函数部分(只包括第一类函数)和操
作函数部分(包括第一类函数外的所有函数),设备函数部分负责获取硬件特征和
开关硬件。而操作函数部分则在硬件设备就绪以后,进行具体的采集、通信、输
出、报警等工作。具体工作结束后,调用设备函数关闭设备。这些函数的调用过
程如图1所示。
3. 动态数据采集程序的实现
用32位DLL驱动程序实现动态数据采集程序时,传输方式可以有中断传输,
DMA传输和软件传输三种方式可选。软件传输速度最慢,DMA传输和中断传输方
式是最常用的触发方式。这里主要介绍中断传输方式,但DMA传输方式和中断方
式在使用32位DLL驱动程序实现时流程基本一样,可以参考。
在各种高级语言下,驱动程序提供的函数形式相同,所以此处只给出驱动程
序函数的调用流程,在具体的某种高级语言下,只要按照流程图就能实现动态数
据采集。中断传输流程图如下:
ADS_EVT_BUFCHANGE事件,该事件表示内部缓冲区已经半满。可以将这部分数据
传输到用户缓冲区中。


发布评论