理论教育 Windows系统软件设计优化方案

Windows系统软件设计优化方案

时间:2023-06-15 理论教育 版权反馈
【摘要】:但在较高级的系统Win-dows2000/XP/7中,这种做法是不行的。这是由于Windows操作系统是一个受保护的系统,由于考虑到Windows操作系统的稳定性,不能随便给硬件下达控制命令。Windows编程常采用调用动态链接库或OCX控件。Windows的所有函数库及大部分设备驱动程序都是DLL。

Windows系统软件设计优化方案

采用一种合适的高级语言,可以大大提高软件的编程效率。目前,可视化的面向对象的编程工具得到了极大的发展,其中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所示。

978-7-111-37992-8-Chapter06-67.jpg

图6-63 创建新的VB工程

2)为了能够使用研华公司的驱动程序来开发数据采集工程,首先需要将研华公司驱动程序的头文件包含到工程中,具体方法是选择View/Project Explorer菜单,如图6-64所示。

3)单击Project Explorer命令之后,弹出Project Explorer窗口,在该窗口中单击右键,显示了一些可选的菜单,如图6-65所示。

978-7-111-37992-8-Chapter06-68.jpg

图6-64 选择View/Project Explorer菜单

978-7-111-37992-8-Chapter06-69.jpg

图6-65 显示可选的菜单

4)单击Add File菜单,添加Advantech为Visual Basic的库文件“Driver.bas”,随后会弹出文件选择对话框,如图6-66所示。通常情况下,头文件是包含在驱动程序安装的默认路径下面。

5)加入库文件,如图6-67所示,然后就可以浏览工程中用到的常量、参数声明和DLL中的函数,如图6-68所示。

创建应用程序代码,并且使用DLL中的函数,其中使用到具体的提供的库函数时,可以参考《Device Driver User Manual》。

978-7-111-37992-8-Chapter06-70.jpg

图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板卡为例,包括模拟量输入、模拟量输出、数字量输入、数字量输出、计数/计频、脉冲输出和报警控件。

978-7-111-37992-8-Chapter06-71.jpg

图6-67 加入库文件

978-7-111-37992-8-Chapter06-72.jpg

图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工具箱中。

978-7-111-37992-8-Chapter06-73.jpg

图6-69 双击Visual Basic显示

978-7-111-37992-8-Chapter06-74.jpg(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

978-7-111-37992-8-Chapter06-75.jpg

图6-71 布局设计

978-7-111-37992-8-Chapter06-76.jpg

图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所示。

978-7-111-37992-8-Chapter06-77.jpg

图6-73 ActiveDAQ在VB对象中

978-7-111-37992-8-Chapter06-78.jpg

图6-74 运行程序

978-7-111-37992-8-Chapter06-79.jpg

图6-75 选择设备

978-7-111-37992-8-Chapter06-80.jpg

图6-76 运行结果

(2)模拟量输出OCX编程

1)双击Visual Basic图标

2)创建一个新工程同模拟量输入,从控件列表中选择Advantech ActiveDAQ AO Control,如图6-77所示,该控件出现在Visual Basic工具箱中。

3)在布局中,定位AO控件、两个TextBox控件、两个命令按钮控件,如图6-78所示。

978-7-111-37992-8-Chapter06-81.jpg

图6-77 控件列表中选择AO

978-7-111-37992-8-Chapter06-82.jpg

图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)验证程序,让程序运行,验证过程与模拟量输入同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈