用ActiveX控件构造虚拟仪器

   2023-12-16 互联网1480
核心提示:  摘 要 本文介绍了ActiveX及其控件技术,探讨了将其应用在虚拟仪器技术中的方法及重要意义,并给出了利用ActiveX控件开发虚拟

  摘 要 本文介绍了ActiveX及其控件技术,探讨了将其应用在虚拟仪器技术中的方法及重要意义,并给出了利用ActiveX控件开发虚拟仪器的实例。

  1 引言

  虚拟仪器技术把计算机技术与仪器技术完美地结合起来,为现代仪器技术掀开了崭新的一页。借助通用的仪器硬件平台(VXI,PC-DAQ等),调用不同的测试软件,就可以构成不同功能的仪器。“软件就是仪器”这句口号充分说明了软件在定义、构造虚拟仪器中所占据的核心地位。既然如此,那么有理由认为在软件业界中所提出的任何新思想、新方法都可以不同程度地应用到虚拟仪器技术中来,从而推动这一属于测试领域的新技术的发展。用Ac-tiveX控件来创建虚拟仪器,将使仪器的构造变得更加便捷,而且使开发的成果更具可重用性。

  2 ActiveX技术及其意义

  简单地说,ActiveX是一种体系结构,它允许使用不同编程语言开发的软件组件在网络环境中相互操作。ActiveX体系结构使用了Microsoft的组件对象模型及分布式组件对象模型标准———COM允许不同的组件对象实现本地相互交谈,而DCOM则提供在网络上对象之间的通信[1]。

  ActiveX与其他一些国际互联网编程方案(如Java)为我们引入了“软件组件”这个新的概念。不必再将电脑软件编写成一个大型完整且独立运行的工具。为了能使软件完成更大更复杂的任务,现在可将它分割成更小的模块,这种模块便是“组件”[2]。各组件的宗旨便是完成特定的任务。组件的发展方向是能跨应用程序、跨平台、跨网络而运行。组件对象技术将彻底改变目前软件生产开发的模式,组件专业化生产厂家将大量出现,就象硬件的专业板卡生产厂家一样,用户将大量购买软件组件(当然亦可自己开发)来构建自己的应用系统,这种方法不仅节省时间、资金,还可提高工作效率。

  ActiveX控件是ActiveX组件中的一个子集。开发者根据规范使用程序设计语言创建ActiveX控件。ActiveX控件是程序的自包含片断或独立的组件[1]。由于ActiveX是一种开放的技术,因此开发者可以在其他程序,甚至用其它语言编写的程序中重用这些ActiveX控件。例如,可以将一个用VisualBasic编写的控件插入用Visual C++编写的程序中。这种重复使用和自包含的本质来自于微软更早的面向对象应用程序研究,即对象链接与嵌入(OLE)标准。事实上ActiveX控件即是由原来的OLE控件或OCX控件而发展成为现在能够运行在Web页面上的软件组件。这也就是说我们能把Ac-tiveX控件嵌入到Web页中,利用VBScript(一种微软IE的脚本语言)编写程序代码,使得创建的应用程序能供客户端下载运行,实现Internet从一个信息出版平台逐步向应用出版平台的转变。

  使用ActiveX控件的方法和使用原来的OLE控件一样。它保留了人们熟悉的属性、方法和事件,通过修改控件的属性(程序设计时或运行时),调用控件的方法,在控件的事件中加入程序代码,就可以方便地组建应用程序。ActiveX技术的最大优势就在于现存的大量ActiveX控件可供开发者调用,以最少的时间最轻松地构造程序。

  ActiveX控件可以自己开发。目前的开发工具有Microsoft Visual Basic 5.0 , Microsoft Visual C++ , Delphi等。其中用VB创建控件最为简单,开发者并不需要了解COM,因为VB提供了一个层用于处理ActiveX控件和COM之间的通信,降低了开发ActiveX控件的复杂性[3]。

  3 ActiveX控件在虚拟仪器中的应用

  软件是虚拟仪器的核心。基于上述软件组件的概念,我们可以将仪器按功能划分成若干模块,如采集模块、分析模块、显示模块。如果对仪器软面板进行划分的话,我们可以将其视作一系列开关、旋钮、波形显示面板等的集合。如果将各个实现不同功能的模块创建成ActiveX控件,那么我们构造虚拟仪器的工作便是通过一种“粘合剂”将各种ActiveX控件按照测试要求“粘合”在一起。当测试要求改变时,我们只需添加某些控件并加以重组,从而充分体现了虚拟仪器不同于传统仪器的一些优点:用户自己定义、可重复利用、大大节省开发和维护费用。

  对于测试领域的工程师,他们往往不是编程专家,他们所面临的并不是如何用复杂的编程语言编写虚拟仪器应用程序,而是如何在一个十分方便的开发环境下,最快捷地组建自己的虚拟仪器。有了ActiveX控件的支持,我们还需要一种快速应用程序开发包RAD(也就是上面所提到的“粘合剂”)。Vi-sual Basic就是这样一个被广泛应用的RAD。此外,NI公司的ComponentWork则是一种专门面向虚拟仪器开发的基于ActiveX控件的可视化编程环境,内部包含了许多针对仪器的特点而设计的控件。

  正如前面所述,ActiveX技术支持应用程序在网络环境下的运行,那么通过ActiveX控件以及Web页面的开发工具(如微软的ActiveX ControlPad),我们不难创建可以网页形式通过Internet/Intranet发布的虚拟仪器。譬如,我们可以在Web服务器上开发这样一个基于Web页的测试程序,其中包括了两个ActiveX控件,一个用于控制采集卡进行数据采样,另一个用于显示数据。在客户端只需配备Web浏览器(如Internet Explorer)以及相应的采集卡,就可下载并运行该测试程序,通过激活Web页面上的控件,就能动态地控制数据的采集和显示。这样带来的好处是:可由专门的虚拟仪器开发人员在服务器端统一开发、管理和维护测试应用程序,客户端只需连接到服务器下载所需的测试程序,并在本地运行,就能完成测试任务,从而极大地减轻了测试人员编写测试程序的负担以及降低了客户端构建虚拟仪器的开销。

  通过以上论述,我们发现利用ActiveX控件创建虚拟仪器不仅快速方便,而且能实现基于网络平台(Internet或Intranet)的虚拟仪器。目前,国内尚未开发出自己的虚拟仪器开发环境,如果我们能利用这项技术,成立专业化生产厂家,集中开发针对仪器的ActiveX控件并且提供类似于ComponentWork这样的可视化开发环境,那么测试人员只需购买现成的仪器控件就能方便的构筑自己的虚拟仪器。相信这必将能推动虚拟仪器技术在我国的发展。

  4 开发实例

  由于ActiveX技术的种种优点,我们在研究开发虚拟仪器的过程中,采用了这项技术。利用VB5.0,我们方便地开发了两个ActiveX控件:Knob控件和Graph控件。利用VB的ActiveX控件界面向导,能方便地构筑ActiveX控件的构架,其间加入自定义的属性、方法和事件,然后在此基础上加入自己的程序代码,使控件按照要求运行。当控件调试完成之后,将其编译成.ocx文件,这时,自己编写的控件就能同其它ActiveX控件一样加入到应用程序中去。选择Project菜单下的Component项,选择Knob控件和Graph控件,控件就被加入了工具箱,见图1。

  

  

以下给出了开发Graph控件的部分代码,用于绘制该控件的外观。每当容许重新绘制控件所处的区域时,UserControl _Paint事件被触发,因此绘制代码总是放在UserControl-Paint事件过程中。

  Private Sub UserControl-Paint()

  UserControl.Scale(0,0)-(100,100)

  picGraph.Height=UserControl.ScaleHeight*8/10

  picGraph.Width=UserControl.ScaleWidth*8.3/10

  picGraph.Left=UserControl.ScaleWidth*1.2/10

  picGraph.Top=UserControl.ScaleHeight*0.5/10

  ’automatically trigger the event picGraph_paint ( ), then

  draw the grids

  ’and display the axis system

  End Sub

  Private Sub picGraph-Paint()

  ’draw grids

  Call DrawGrids(m-XGridNumber,m-YGridNumber)

  ’display the axises

  Call DisplayAxis (m-XAxisBegin, m-YAxisBegin, m-

  XAxisDiv, m-YAxisDiv, m-XAx-

  isUnit,-

  m-YAxisUnit,m-XGridNumber, m-

  YGridNumber)

  End Sub

  表1给出了Graph控件的部分属性和方法的说明。

  

  利用这两个自定义的控件,我们开发了一个简单的虚拟示波器。选择采样速率,单击采样按钮,采集卡就开始数据采集,单击显示按钮,采集的数据以波形显示,通过调节两个旋钮,改变时基轴和幅度轴每格的大小,就能相应地调整波形的显示。图2给出了虚拟示波器运行时的情况。

  在开发过程中,我们充分体会到了用ActiveX控件编程的好处。一旦完成了控件的编写,在将其作为标准控件使用时,就不需要考虑控件的内部代码,因为它是一种封装的自包含的软件组件。而一旦发现控件不够完善,那么只需对控件进行改进,而不用对包含控件的应用程序作太多的修改。有了编写自定义控件的经验,我们认为借助ActiveX ControlPad(可以从微软站点下载)将这些控件插入Web页,从而实现创建基于网络环境的虚拟仪器也并非难事。

  5 结论

  ActiveX本身还是一项未完全成熟的技术,我们在将ActiveX技术用于虚拟仪器技术时也还存在一些问题有待解决。

  首先,用ActiveX控件开发虚拟仪器必将存在一些硬件控制方面的问题。由于虚拟仪器并非纯粹是软件应用程序,它还将涉及到对硬件的控制。譬如一个采集控件内部必然包含了控制采集卡的代码。当两个不同的数据采集控件同时对某一块采集卡进行控制和采集时,如何保证它们之间不发生冲突[5]?其次,控件编程必然会相应地增加应用程序的代码从而影响测试程序的运行速度,这将影响对速度要求较高的虚拟仪器的设计。还有,网络传输速度也将影响基于网络的虚拟仪器的下载速度。因此,除了提高网络传输带宽外,如何最大限度地简化编写ActiveX控件的代码也尚须解决。

  

  尽管ActiveX技术还存在种种局限,而且在虚拟仪器的应用方面存在一些问题,但是我们不能否认它是一项很有前途的技术,它的最大优点在于保护开发者以前的投资,几千个现存的控件是这种技术的资本。而且微软公司正在努力地改进这项技术。值得一提的是,利用ActiveX组件技术,还能够开发基于客户机/服务器模式的分布式应用程序,如果将其应用于虚拟仪器技术,可以开发出分布式虚拟仪器,从而实现仪器的远程监视与控制。我们相信,随着ActiveX技术不断走向成熟,它在虚拟仪器技术方面的应用必将更上一层楼。

  参考文献

  [1] 刘卫编译.尚待观望的ActiveX技术.中国计算机世界,1997(29)

  [2] Paul Lomax,京京翻译组译.ActiveX与VBScript实战解析.北京:机械工业出版社,1997.6

  [3] 李枝琳编译.JavaBeans与ActiveX两雄相争,谁主沉浮.中国计算机世界,1997(17)

  [4] John Pasquarette. Activating the Internet For VirtualInstrumentation. Evaluation Engineering, 1997.2

  [5] John Pasquarette. Building Virtual Instruments WithOLE Controls. Evaluation Engineering , 1996.2


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅