




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于IVI-COM的可互换仪器驱动架构研究王 伟(北京航天测控技术开发公司,北京 100037)摘要:文章介绍了IVI仪器驱动的体系结构,说明了IVI-COM驱动程序的工作原理,并以VXI数字万用表AMC2301和开关模块AMC2616为典型实例,简要说明了在VC环境下实现IVI-COM仪器类接口操作具体仪器的使用方法。关键词:IVI-COM;仪器驱动程序;类接口1 IVI仪器驱动软件是虚拟仪器的灵魂,而仪器驱动又是虚拟仪器软件的核心,它以高级的抽象的仪器映像方式将用户界面与仪器的硬件联系起来。长期以来,出于设备废行、升级而引起的硬件设备的变更常常迫使系统人员对现有测试系统软件进行重复的修改和
2、编译工作,系统的稳定性很差,仪器的互换能力很弱。1998年8月,为了进一步提高仪器驱动程序的执行性能,达到真正的仪器互换,由九个公司成立IVI(Interchangeable Virtual Instrumentation)基金会,在VPP的基础上为仪器驱动程序制定新的编程结构标准,使应用程序可以实现完成独立于硬件,而不管其是何种总线接口,并增加了仪器仿真、状态缓存等机制,进而大大提高了仪器的执行效率。图1 IVI仪器驱动程序的结构模型1.1 IVI仪器驱动程序的结构 图1是IVI仪器驱动程序的结构模型,该模型同VPP模型相比较,其主要区别在于:(1)函数体中增加了一组具有标准应用程序接口的属
3、性函数和与属性相对应的回调函数;(2)引入面向对象技术中的属性管理机制,增加了一个对各属性进行管理的IVI引擎。IVI引擎常以动态连接库的形式提供,其运行对用户是透明的。所有用于创建仪器驱动程序的函数以IVI库或者IVI引擎导出函数的形式提供给仪器驱动程序开发者,同时函数库也提供给用户应用层用于分析和显示仪器驱动程序信息函数。1.2 IVI仪器驱动程序的特点由于IVI提供了一种目前最先进的虚拟仪器驱动程序开发技术,因此基于IVI模型开发的驱动程序除具有VPP驱动程序所具有的特点外,还具有如下的特点:1)具有仪器级的可互换性。根据IVI类驱动器编写的测试代码,在仪器硬件被另外一个同类的仪器模块代
4、替时,不必经过修改便可直接调用。2)高性能的具有状态存储机制的程序结构。IVI引入了面向对象的属性管理机制,其模型中增加的IVI引擎可实现状态存储功能。对于VPP驱动程序来说,总是假设仪器状态是未知的,因此,每个测量函数在进行测量操作之前都要对仪器进行设置,而不管仪器在此之前是否被配置过。而IVI中通过属性模型,驱动程序能自动存储仪器的当前状态。一个IVI仪器驱动程序函数只有在仪器设置和函数所要求的不一致时,才执行I/O操作,这样IVI引擎通过跟踪仪器的硬件设置,避免发送冗余的仪器配置命令,从而可以优化程序运行时的性能,这是比VPP驱动程序性能优越的一个突出特点。3)具有仪器的仿真能力。IVI
5、模型可以在没有仪器硬件的情况下使用驱动程序建立应用程序。在这种仿真状态下,驱动程序不执行仪器I/O而仅利用软拷贝来进行处理,它检查输入参数并且产生仿真的输出结果。有了这些仿真数据,开发者在没有仪器硬件的情况下也能为仪器开发应用代码。4)具有多线程的安全性。5)具有范围检查、状态缓存以及其它的调试和开发功能。2 用COM实现的IVIIVI基金会提出基于COM的IVI驱动程序,这并非想取代基于C的IVI驱动程序,而是作为一个必然的发展,以满足ATE(自动测试环境)领域的各种要求。2.1 引入COM的技术依据COM接口是句法和语义上的组合,句法可由IDL(接口描述语言)来精确地获取。语义上则需要有一
6、定的模糊性,以使多种对象能使用同一个接口。这样COM接口是用于实现有精确句法、在类中可以构造各种仪器的IVI类定义的理想工具。在COM接口中,并不像C语言要求的,需要有一个前缀,COM并不需要类驱动程序就提供了句法上的可互换性。COM接口隐藏了执行代码和详细的算法,这就意味着仪器生产商可以利用各种适合他们的方式来实现接口。COM接口是用COM类和实例化的COM对象来实现的。这使得COM驱动器可以在内部执行实例的数据,从而克服了VPP和IVI中的一个缺陷。COM的封装性也使版本问题变得简单了,只要保持其接口不变就可以随意替换COM对象,不需要进行编译就可以把它集成到现存的客户测试程序中去。2.2
7、 应用开发环境的要求IVI-COM驱动器必须可以在所有的比较流行的自动测试应用开发环境中使用,包括:LabView、HP VEE、VB、C、C+、VC+、LabWindows/CVI等。每种环境对于已经存在的COM的支持都有其自身的特点。值得注意的是,一些语言在数据类型方面存在很大限制,这在一般的应用中可能暴露出很多致命的缺陷,但是IVI-COM相对来说对数据类型要求要简单一些。事实上,所有用于现有的IVI仪器的数据类型都可以用变量来代替。这样就保证了IVI驱动器可以被任何应用程序开发环境所使用。3 IVI仪器驱动的使用3.1 仪器类标准仪器编程接口图2 IVI仪器驱动体系结构图因为所有的仪器
8、不可能具有相同的功能,因此不可能建立一个单一的编程接口。正因为如此,IVI基金会制定的仪器规范被分为基本能力和扩展属性两部分。前者定义了同类仪器中绝大部分仪器所共有的功能和属性;后者着重体现了每类仪器的特殊功能和属性。仪器类被定义成仪器属性和对这些属性编程的API的集合,这个类也包含了程序员设值属性和从仪器上获取数据的函数。图2为IVI仪器驱动的体系结构图。IVI技术通过定义通用仪器类的标准仪器驱动器的编程接口,提高了测试软件的通用性,从而极大的降低了测试软件的开发周期和研发成本。IVI技术规定了基本函数调用的标准化,并且标准化了一些设置以及允许数据,因而基于IVI技术的产品可以为测试系统的开
9、发节约大量的成本。一个特定的IVI仪器驱动器,包括一个特定仪器模块信息,如命令字符串、解析代码以及仪器设置的有效范围。3.2 系统配置为了在测试程序中使用IVI类驱动程序就必须首先配置系统以便类驱动可以与具体的仪器驱动进行交互,这一步是通过IVI基金会提供的IVI共享组件Configuration Server来完成的。IVI Configuration Server为IVI应用程序提供系统数据库服务,特别是它提供系统的初始化和配置信息。Configuration Server是由configuration store XML文件和一个可以访问、存取操作XML文件的COM对象组成。图3为con
10、figuration store XML文件内容片断。MAX是所有硬件以及相关软件的国际仪器标准配置工具,首先配置的是逻辑名,逻辑名是指在应用中所使用的虚拟仪器。一个虚拟仪器是物理仪器、仪器驱动器、选择设置的组合。改变逻辑名所指的仪器,就可以改变仪器而不改变测试程序,这个机制是通过类驱动器中的初始化函数引发的。例如:当使用一个类驱动器初始化一个仪器时,并没有将形如:“GPIB:2:INSTR”的标准资源字符串传递给驱动器,而是给出了一个“DMM1”这样的逻辑名。configuration store XML文件中包含了仪器驱动器的位置以及初始化配置信息,其中:(1)逻辑名文件夹包含了用户定义的
11、所有逻辑名,这些逻辑名用来区分仪器中用到的仪器,文件夹包含了驱动器属性的初始化信息。如:State caching,simulation等等。(2)仪器驱动器文件夹包含了有关在哪里能找到每一个虚拟仪器文件夹中的仪器的图3 configuration store XML片断具体驱动器信息。文件夹包含的信息是以VISA资源形式描述的物理仪器地址。这些文件夹的信息随着系统增加驱动器而更新,需要更换仪器,只要简单的在逻辑名文件夹处改变具体的仪器对应的逻辑名即可。3.3 IVI-COM仪器驱动程序的工作过程图4 IVI-COM仪器驱动程序调用过程体系结构图图4为IVI-COM仪器驱动程序调用过程的体系结
12、构图。图中虚线框中部分代表IVI仪器驱动,它既是一个仪器类驱动接口,也是一个仪器专用驱动接口。与IVI-C不同点在于,仪器类驱动接口和仪器专用接口都封装在同一个仪器驱动COM对象中。因此应用程序对IVI-COM仪器驱动组件既可以使用类驱动接口进行仪器操作,也可以使用专用驱动接口进行操作。4 在VC+6.0中开发IVI-COM应用示例本示例通过访问IVI-COM驱动程序的仪器类接口,来对具体测试仪器(测量模块)进行操作,完成测试仪器(测量模块)测量功能。开发步骤如下:图5图6(1) 创建一个基于对话框的MFC应用程序(2) 在窗体中添加两个按钮Read和Exit,并添加一个编辑框,如图5。(3)
13、 在应用程序的InitInstance()函数中开头部分添加代码“AfxOleInit();”(4) 在对话框类头文件中导入COM组件,如图6。(5) 在对话框类中添加成员变量,代码如下:IIviSessionFactoryPtr SessionFactoryPtr; /IVI共享组件SessionFactory智能指针IIviDmmPtr DmmPtr; /万用表仪器类接口智能指针(6) 在对话框OnInitDialog()函数中添加代码,如下:HRESULT hr;hr = SessionFactoryPtr.CreateInstance(_uuidof(IviSessionFactory
14、);if (SUCCEEDED(hr) try DmmPtr =SessionFactoryPtr->CreateDriver("AmcDmm");/AmcDmm为逻辑名称DmmPtr->Initialize("AmcDmm",VARIANT_FALSE,VARIANT_FALSE,""); catch (_com_error er) BSTR Desc;er.ErrorInfo()->GetDescription(&Desc);CString ErrorString(Desc);AfxMessageBox(
15、ErrorString);exit(int)er.Error(); else AfxMessageBox("Failed to create session factory instance!");exit(hr);(7) 在按钮Read点击事件下添加代码,如下:double dRead;CString strRead;tryDmmPtr->Configure(IviDmmFunctionDCVolts,IviDmmAutoRangeOn,0);dRead = DmmPtr->Measurement->Read(2500);strRead.Format("%lf",dRead);m_ctlDisplay.SetWindowText(strRead); catch (_com_error er) BSTR Desc;er.ErrorInfo()->GetDescription(&Desc);CString ErrorString(Desc);AfxMessageBox(ErrorString);exit(int)er.Error();(8) 在按钮Exit点击事件下添加代码,如下:DmmPtr->Close();图7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省宁波市海曙区三校联考2025届七下数学期末学业水平测试模拟试题含解析
- 2025届河北省衡水市故城县七年级数学第二学期期末复习检测试题含解析
- 法学概论考试中的法律语言理解与试题及答案
- 法学概论重点突破试题及答案
- 2025年软件开发环境考题及答案
- 如何进行精确的市场预测试题及答案
- 行政法学学习攻略:试题及答案
- 系统维护与管理试题及答案
- 认真对待学习态度的重要性2023年高考作文试题及答案
- 2025至2030年中国法式鲜鸡片行业投资前景及策略咨询研究报告
- GB/T 2982-2024工业车辆充气轮胎规格、尺寸、气压与负荷
- 史记人物课件教学课件
- 走进泰国-课件
- 一站到底课件
- 西安中建一局装修合同模板
- 社会团体财务报表
- DB34∕T 3468-2019 民用建筑楼面保温隔声工程技术规程
- iso220002024食品安全管理体系标准
- 2024年秋新冀教版三年级上册英语教学课件 U3L3
- 拔牙术后并发症及处理对策
- 2024年山东省济南市历下区中考一模物理试题(解析版)
评论
0/150
提交评论