采用一种合适的高级语言,可以大大提高软件的编程效率。目前,可视化的面向对象的编程工具得到了极大的发展,其中Visual C++、Visual Basic、Delphi和C++Builder等属于最为热门的编程工具。
在以往DOS年代,利用input和output指令可以直接控制计算机上的相应地址,但在Windows操作系统中,已经不能直接这样做了。在Windows 98中,可以使用Visual C++,利用inp和outp输入、输出指令达到DOS模式下相同的控制功能。但在较高级的系统Win-dows2000/XP/7中,这种做法是不行的。这是由于Windows操作系统是一个受保护的系统,由于考虑到Windows操作系统的稳定性,不能随便给硬件下达控制命令。硬件的操作通常是采用微软公司的软件开发包(Software Development Kit,SDK)和器件开发包(Device Devel-opment Kit,DDK)来完成的。
Windows编程常采用调用动态链接库(DLL)或OCX控件。通常板卡厂商经常提供板卡DLL,较大型的厂商也会提供板卡OCX控件。
通过OCX或者DLL控制板卡时,采用转译,程序中的控制要求可以到达板卡,而板卡中的数据也可返回到程序。
6.4.3.1 调用动态链接库编程
1.DLL原理
Windows 95/98/NT/2000/7的32位动态链接库(DLL)的函数库是动态链接的,这就是说DLL并不直接编译到应用程序的可执行文件中,而只是将DLL的路径信息保存在可执行文件中。设备驱动程序,只是在可执行程序执行过程中DLL被调用时,才被链接到应用程序中。导入库(*.LIB)包含了它们的DLL定义的外部函数,它们隐含了DLL的位置。如何为应用程序引入DLL的路径信息,是通过导入函数库还是通过函数声明的方法,取决于所使用的编程工具。使用函数原型是良好的编程习惯,这也是为什么设备驱动程序总是被打包成函数原型形式,安装工具为选择的开发工具复制正确的原型文件。
DLL和Windows应用程序最大的区别是它不能作为单独任务执行,而应由Windows应用程序直接或间接调用。即DLL是Windows和Windows应用程序可使用的资源库,这些资源是可以共享的。Windows的所有函数库及大部分设备驱动程序都是DLL。
2.硬件设备编程应用
采用研华的设备驱动程序,并结合微软的可视化平台来开发应用系统,需要按照下面的步骤使用研华驱动程序提供的DLL。
1)像编写一般的Windows应用程序一样,创建应用程序代码,在这些代码中,可以像典型的函数调用一样,调用研华驱动程序中提供的DLL中的函数。
2)声明在程序中用到的函数,包括DLL的头文件,该函数声明了所有的DLL中的函数,如下所示:
#include"driver.h"
3)将DLL的导入库(例如,“ADSAPI32.LIB”)加到工程模块中。
3.用Visual Basic(VB)来创建应用程序
要正确地使用函数,必须按照下面的步骤来使用DLL。
1)选择File/New Project菜单创建工程,如图6-63所示。
图6-63 创建新的VB工程
2)为了能够使用研华公司的驱动程序来开发数据采集工程,首先需要将研华公司驱动程序的头文件包含到工程中,具体方法是选择View/Project Explorer菜单,如图6-64所示。
3)单击Project Explorer命令之后,弹出Project Explorer窗口,在该窗口中单击右键,显示了一些可选的菜单,如图6-65所示。
图6-64 选择View/Project Explorer菜单
图6-65 显示可选的菜单
4)单击Add File菜单,添加Advantech为Visual Basic的库文件“Driver.bas”,随后会弹出文件选择对话框,如图6-66所示。通常情况下,头文件是包含在驱动程序安装的默认路径下面。
5)加入库文件,如图6-67所示,然后就可以浏览工程中用到的常量、参数声明和DLL中的函数,如图6-68所示。
创建应用程序代码,并且使用DLL中的函数,其中使用到具体的提供的库函数时,可以参考《Device Driver User Manual》。
图6-66 单击Add File菜单
6.4.3.2 调用ActiveX控件编程
1.ActiveDAQ介绍
使用Visual C++、Visual Basic和Delphi等编程,ActiveDAQ是一种用于快速、简便开发数据采集程序的可视化编程工具,所提供的对象的链接与嵌入用户控件(OCX)使程序设计更加简便。ActiveDAQ控件可运行于Windows 95/98/NT/2000/7,其中研华公司板卡一般有8个32位ActiveDAQ控件,以PCI-1711板卡为例,包括模拟量输入、模拟量输出、数字量输入、数字量输出、计数/计频、脉冲输出和报警控件。
图6-67 加入库文件
图6-68 DLL中的函数
2.OCX特性与优势
直观的属性页接口容易学会,并可编写简单的程序,通用的编程控件兼容性好,可选择适当的工具,支持完整的研华I/O硬件、PCI/ISA采集控制卡、ADAM、PCM和MIC-2000,支持高速采集功能,满足对高速性能的需求。
3.用Visual Basic调用OCX编程
(1)模拟量输入OCX编程
1)双击Visual Basic图标,如图6-69所示。
2)选择Standard EXE图标,单击【Open】按钮,创建一个新工程,从工程菜单中选择Components,得到“Components”对话框,从控件列表中选择Advantech ActiveDAQ AI Con-trol,如图6-70所示,则该控件出现在Visual Basic工具箱中。
图6-69 双击Visual Basic显示
(www.daowen.com)
图6-70 控件列表中选择AI
3)在Form 1中完成布局设计,如图6-71所示。
4)模拟量控件属性设置,从View菜单中选择属性窗口,再从属性窗口中选择DAQAI控件,从DAQAI控件属性中选择数据类型为“1-adReal”,如图6-72所示。
5)在布局中,双击【Select Device】按钮,写下以下代码:
Private Sub cmdSelectDevice_Click()
DAQAI1.SelectDevice
txtDeviceName.Text=DAQAI1.DeviceName End Sub
图6-71 布局设计
图6-72 Visual Basic属性窗口
6)在布局中,双击【Read】按钮,写下以下代码:
Private Sub cmdRead_Click()
DAQAI1.OpenDevice
txtAIValue=DAQAI1.RealInput(0)
DAQAI1.CloseDevice
End Sub
7)从View菜单中,选择Object Browser,能帮助创建VB代码,得到如图6-73所示的画面。
8)验证程序,让程序运行,开始屏幕显示,如图6-74所示。
单击【SelectDevice】按钮,选择相应设备,如图6-75所示。
单击【Read】按钮,完成对模拟量的输入数据采集,得到运行结果,如图6-76所示。
图6-73 ActiveDAQ在VB对象中
图6-74 运行程序
图6-75 选择设备
图6-76 运行结果
(2)模拟量输出OCX编程
1)双击Visual Basic图标
2)创建一个新工程同模拟量输入,从控件列表中选择Advantech ActiveDAQ AO Control,如图6-77所示,该控件出现在Visual Basic工具箱中。
3)在布局中,定位AO控件、两个TextBox控件、两个命令按钮控件,如图6-78所示。
图6-77 控件列表中选择AO
图6-78 布局设计
4)在布局中,双击【Select Device】按钮,写下以下代码:
Private Sub cmdSelectDevice_Click()DAQAO1.SelectDevice txtDeviceName.Text=DAQAO1.DeviceName
End Sub
5)在布局中,双击【Write】按钮,写下以下代码:
Private Sub cmdWrite_Click()DAQAO1.OpenDevice DAQAO1.RealOutput Val(txtValue)DAQAO1.CloseDevice
End Sub
6)验证程序,让程序运行,验证过程与模拟量输入同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。