[讨论] 基于DLL用VB控制研华PCL-818HG板卡

wuguo   2007-5-16 11:39 楼主

动态链接库DLL是一种基于Windows的程序模块,它是在运行时刻被装入和连接的。动态链接库中只包含供应用程序运行时装入该DLL的有关信息,并非是源代码的复制,因此使用动态链接库可以使多个应用程序之间共享代码和资源从而提高运行速率。

    研华公司的“Advantech DLL Driver”软件支持PCL-818HG等多种型号板卡的设备驱动,它提供了“adsapi32.dll”动态链接库,其中包含有一系列能对硬件设备进行底层I/O操作的函数。从VB调用这些DLL函数时,先在全局模块或窗体的说明部分,用Declare声明所要使用的DLL函数,然后象使用VB自己的函数(或过程)一样调用这些函数。例如:Declare Function DRV_DeviceOpen Lib“adsapi32.dll”(By Val DeviceNum As Long,DriverHandle As Long)As Long

    其中“DRV_DeviceOpen”是将在VB使用的函数名,“adsapi32.dll”是提供该DLL函数的动态链接库。为方便用户,“Advantech DLL Driver”的软件开发商制作了“Driver.bas”文件,其中声明了有关DLL函数及相应的结构,只需把“Driver.bas”导入VB工程的模块中,用户就可省去声明DLL函数的麻烦。下面对几个关键的DLL函数进行简单的说明。

    ①DRV_DeviceOpen():该函数必须最先被调用。它加载一个设备驱动程序到内存,并确定设备的类型,完成对设备的初始化,使设备做好I/O的准备工作;同时返回一个函数值,若设备驱动成功返回非“0”的设备句柄,若设备驱动失败则返回“0”。

    ②DRV_DeviceClose():该函数是关闭由DRV_DeviceOpen()函数打开的设备,它的函数参数是由DRV_DeviceOpen()函数返回的设备句柄,若设备关闭成功返回非“0”值,否则返回“0”。
    ③DRV_DeviceGetFeatures():该函数从由DRV_DeviceOpen()函数打开的设备中获取相关的硬件信息;同时返回一个函数值,操作成功则返回非“0”值,否则返回“0”。

    ④DRV_GetAddress():该函数仅在VB中适用,它把变量作为函数参数,返回值是该变量的指针或地址。在VC++或Delphi中,用户能获得一个变量的指针或地址,但在VB中却没有相应标准函数来获取变量的内存地址。因此,特为VB开发环境制作了该函数。

    ⑤DRV_MAIVoltageIn():该函数的参数是由DRV?-DeviceOpen()函数返回的设备句柄,它每被调用一次就对通道的设置完成一次I/O操作,操作成功则返回“0”值。在实际的数据采集中,是通过调用这个函数得到与模拟量相对应的电压值。按照所要求采样频率,在VB的Timer()事件中定时调用该函数。


详细的过程在这里就不一一举例了,有兴趣的朋友可以试试

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复