APP下载

一种IVI-COM仪器驱动程序的设计方法

2020-03-27朱建刚

仪器仪表用户 2020年4期
关键词:互换性驱动程序专用

朱建刚

(中电科仪器仪表有限公司,山东 青岛 266555)

在测试领域,虚拟仪器技术是最新的自动测试技术之一。IVI仪器驱动程序在虚拟仪器驱动程序层面上定义了全新的规范和架构,使同一类仪器实现了一定的互换性,降低了开发测试系统过程的成本。本文将介绍应用Nimbus Driver Studio开发IVI-COM驱动程序的过程,并在上位机编写控制程序调用仪器驱动,实现对仪器的远程控制。

1 IVI-COM仪器驱动程序介绍

IVI仪器驱动程序定义了仪器的编程接口,使仪器的硬件接口与测试系统的应用程序实现了分离,不仅将测试系统的开发变得更加高效,还使仪器具备了一定的可互换特性[1]。IVI规范主要定义了IVI类驱动器和IVI专用驱动器。IVI类驱动程序介于应用程序和IVI专用驱动程序之间,实现应用程序对专用驱动程序的调用。IVI专用驱动程序是实现仪器控制的主要驱动程序,包括类兼容专用驱动程序和定制专用驱动程序[2]。

图1 IVI驱动结构图Fig.1 IVI Drive structure diagram

COM是一种以组件为发布单元的对象模型,它定义了不同组件之间的交互规范。1个组件的形式是1个动态链接库(dll)或1个可执行文件(exe)。COM组件在提供组件接口标准的同时,还引入了面向对象的思想,每个COM组件对应1个或多个COM对象,每个对象包含多个接口,每个接口又由多个用来实现用户应用程序功能的函数组成[3]。

IVI-COM仪器驱动程序是应用了COM API的IVI驱动程序,而仅是IVI-COM驱动程序中的API并不能实现仪器的互换性,IVI基金会为此定义了IVI-COM会话工厂(IVICOM Session Factory)组件。应用程序通过逻辑名访问IVICOM会话工厂,会话工厂通过该逻辑名与IVI配置文件中的逻辑名匹配,得到实际的IVI-COM驱动器指针,从而实现动态加载IVI-COM驱动器的动态库[4]。驱动程序包含仪器通用功能对应的操作函数,通过操作函数实现对仪器的控制[5],IVI驱动结构如图1所示。

2 IVI-COM仪器驱动程序设计开发

Nimbus Driver Studio软件集成在Microsoft Visual Studio开发环境下,可以完成IVI-COM以及IVI-C仪器驱动程序的开发工作。接下来,以IviRFSigGen射频信号发生器类规范的仪器驱动程序“Ceyear1435RfSigGen”为例,设计某款信号发生器的IVI-COM仪器驱动程序。

2.1 搭建开发环境

本次开发基于Microsoft Windows 7操作系统,首先安装Microsoft Visual Studio 2010软件包;之后安装Nimbus开发组件。其中,Nimbus组件集成在Visual Studio 2010开发环境下。

2.2 创建IVI-COM仪器驱动框架

启动Visual Studio 2010,在新建项目对话框中选择IVI-COM Projects下的IVI-COM Driver模板。根据生成向导,依次添加项目的名称、仪器类(IviRFSigGen类)、LXI类型以及属性等,生成IVI-COM驱动解决方案,并建立驱动框架。解决方案中各工程之间的关系如图2所示。

图2 驱动解决方案包含工程之间关系Fig.2 Relationship between projects in driving solutions

IVI-COM仪器驱动程序包含3个根接口,分别是IIviDriver、IIviRFSigGen及ICeyear1435RfSigGen。 其中,IIviDriver是仪器固有功能根接口,该接口下包含IiviComponentIdentity、IIviDriver、IiviDriverIdentity、IiviDriverOperation及IiviDriverUtility共5个子接口,该接口具有可互换性;IIviRFSigGen是仪器类兼容根接口,该接口是射频信号发生器类仪器基本功能的实现接口,包含的功能子接口有ALC、AnalogModulation(包含AM、FM及PM)、DigitalModulation( 包 含Arb及Base)、IQ、LFGenerator、PulseGenerator、PulseModulation、ReferenceOscillator、RF、Sweep等[6],该接口具有可互换性;ICeyear1435RfSigGen是仪器专用功能根接口,该接口是开发者基于仪器的功能而添加的专用接口,包含的具体接口由仪器本身功能决定,仪器的全部功能都能在该接口下实现,该接口不具备可互换性。

2.3 设计开发IVI-COM驱动

在IVI-COM驱动程序中,每个功能都被设计成1个包含属性或者方法的接口,各个接口之间可以相互调用。其中,属性一般只包含1个参数,1个属性的读取以及设置分别由1个前缀为“get_”和“put_”的函数实现。方法包含的参数不受限制,设置方式灵活多变,能实现更为复杂的仪器功能。属性和方法的实现方式类似,如果实现方式简单,直接在Instrument command选项中设置程控命令即可,但要是单独的程控命令不能很好地实现所要添加的功能,则需要在CoCeyear435RfSigGen中详细设计实现的源代码。

IIviDriver根接口与IIviRFSigGen根接口下的功能是信号发生器类仪器的通用接口,这类接口下的功能是确定的。IIviDriver根接口下的功能接口控制函数源代码在驱动框架建立时已自动生成。IIviRFSigGen根接口支持IVI规范“IVI-4.10_RfSigGen”中对射频信号发生器类仪器所定义的属性和方法,该根接口下的大部分功能在专用接口中已经实现,可直接调用专用接口下相应的功能接口函数即可。ICeyear1435RfSigGen根接口包含仪器全部功能,在该根接口下按仪器功能分类添加子功能接口,各子功能接口就可以通过添加属性或方法来实现仪器的具体功能。属性的添加过程如图3所示,方法的添加过程与属性类似。

图3 属性添加流程图Fig.3 Add property flowchart

依照上述步骤将信号发生器的全部功能,以属性或方法的形式添加到对应的子功能接口下,并设计好实现的程序代码。

2.4 生成IVI-COM驱动帮助文档与安装包

在解决方案“Ceyear1435RfSigGen”属性页中配置属性,选择需要生成的项目配置后编译驱动程序。在驱动程序各项编译成功后,仪器的帮助文档在解决方案***Helpin下生成,仪器驱动的安装包在***Setupin下生成。

3 验证IVI-COM驱动程序

在上位机上安装IVI-COM仪器驱动之前,需要确保IVI Shared Components组件已成功安装。驱动安装目录为C:Program FilesIVI FoundationIVI。驱动安装成功后,需要设置IVI配置仓,这里应用NI-MAX软件完成该设置。MAX会自动识别已安装的驱动,通过设置逻辑名关联到驱动并对驱动进行管理。在MAX软件里添加逻辑名“Ceyear1435”,将之关联驱动“Ceyear1435RfSigGen”,配置好资源描述、资源地址等信息,最后通过“Save IVI Configuration”保存设置。MAX软件配置界面如图4所示。

通过逻辑名调用IVI-COM驱动的控制程序主要代码为:

#import “GlobMgr.dll” no_namespace

#import “IviDriverTypeLib.dll” no_namespace

图4 仪器驱动程序配置界面Fig.4 Instrument driver configuration interface

#import “IviRFSigGenTypeLib.dll” no_namespace

IIviDriverPtr spDriver(_uuidof(Ceyear1435RfSigGen));

spDriver->Initialize((“Ceyear1435”), VARIANT_FALSE,VARIANT_FALSE, _T(“”));

IIviRFSigGenPtr spSS(spDriver);

spSS->RF->Frequency = XXX; //设置频率

spSS->RF->Level = XXX; //设置功率

……

spDriver->Close();

通过网线连接仪器与上位机后,在上位机上运行测试程序,此时信号发生器前面板显示“远控”状态,且仪器的频率及功率等均按要求进行了设置,证明了本文设计的IVI-COM仪器驱动的有效性。将连接的信号发生器替换为另外某款信号发生器,只需在MAX软件中对仪器驱动进行重新配置,并修改测试程序中的逻辑名与之相对应即可,其他部分无需改动。经过实际测试,测试程序可通过切换逻辑名测试不同的仪器,证明了IVI-COM仪器驱动具有良好的可互换性。

4 结束语

本文设计并实现了某款信号发生器的IVI-COM仪器驱动程序,经验证该驱动能有效的对仪器进行控制;同时通过试验证明IVI-COM仪器驱动程序具有一定的可互换性,降低了开发人员的测试时间,具有显著的实用价值,已成功应用于数款信号发生器。

猜你喜欢

互换性驱动程序专用
体能测试专用鞋
体能测试专用鞋
体能测试专用鞋
氢气与城镇天然气掺混的互换性分析
阻止Windows Update更新驱动程序
飞机零部件互换性技术研究
计算机硬件设备驱动程序分析
爱它就给它专用的设备
探讨数控车刀与普通车刀的互换性及区别
天津市引进多种天然气气源后居民灶具互换性问题探讨