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事件,该事件表示内部缓冲区已经半满。可以将这部分数据

传输到用户缓冲区中。