编辑: 思念那么浓 | 2019-07-06 |
软件接口方面,仪器程控命令封装库支持多种编程语言的调 用,包括 VC++, Labview/CVI 和VEE(Virtual Execution Engine)等. 使用仪器程控命令封装库时,自动测试系统软件调用仪器程控命令封 装库里的驱动程序,驱动程序根据输入的参数,通过不同的硬件接口控制仪器完成相应的操作.若系统中的仪器 或通信方式被更换,只需要适当修改仪器程控命令封装库配置文件,而系统软件无需改动,整个自动测试系统的 维护和升级变得非常简单.控制流程框图见图 1. 仪器程控命令封装库通过虚拟仪器软件结构(Virtual Instrument Software Architecture,VISA)调用可编程仪器 标准命令(Standard Commands for Programmable Instruments,SCPI)的方式来控制仪器,获取测量结果[6] .VISA Fig.1 Flow of control 图1控制流程 test program VC++, CVI, LabVIEW, VEE interchangeable instrument driver IEEE488.2 VISA GPIB USB Serial LAN instrument
112 太赫兹科学与电子信息学报 第15 卷是VXI plug&
play 联盟制定的 I/O 接口软件标准,而SCPI 是为解决程控仪器编程标准化而制定的标准程控语言, 使仪器程控命令封装库实现与仪器的硬件接口类型、操作系统和编程语言无关,而且对不同厂商的仪器都能很好 地兼容. 3.2 实现方式 为满足仪器程控命令封装库的设计与使用要求,本仪器程控命令封装库采用动态链接库(DLL)的方式来实 现,DLL 是封装好的供多个应用程序调用的功能模块,是重要的代码共享技术[7] .封装好的仪器程控命令 DLL 文件,并不复制代码到自动测试系统软件的可执行模块中,而是在自动测试系统软件运行期间才加载 DLL,仪 器程控命令封装库采用 DLL 技术,具有以下优点: 1) 封装实现.DLL 可用不同的编程语言进行开发,并由不同的编程语言进行调用,只要 DLL 的接口函数 确定,内部实现可以独立设计完成. 2) 动态加载.对于 DLL,自动测试系统软件可以在运行时确定需要执行什么操作,然后装入相应的函数即 可,而不需要将全部函数加入. 3) 节省内存.如果
2 个或多个应用程序需要使用同
1 个DLL,那么该 DLL 只要被放入内存
1 次,所有的 应用程序都可以共享它,DLL 可以同时被多个进程调用,极大地释放了系统资源. 4) 便于维护.DLL 功能独立,即使数据众多也能方便地进行管理. 3.2.1 函数定义 仪器程控命令封装库采用 DLL 技术来实现,而DLL 中的函数分为内部的和外部的,内部函数只能在所在 DLL 中使用;
而外部函数可以被其他模块和自动测试系统软件使用[8] .在使用仪器程控命令封装库时,自动测试 系统程序设计师只需调用仪器程控命令封装库提供的外部函数,就能完成对具体型号仪器的控制和数据采集,仪 器程控命令封装库对 DLL 外部函数的种类、函数名及调用参数进行统一定义. 为方便系统程序设计师理解和使用,外部函数由函数名、函数参数和函数返回值组成.其中,函数名由 前缀 及 函数功能描述字符串 2部分组成,采用简明、直观的英文描述对函数进行命名.如设计的SPA_SetFreqCenter()函数中,采用频谱分析仪的英文缩写 SPA(Spectrum Analyzer)表示专门针对频谱分析仪的程 控命令封装库函数;
SetFreqCenter 表示该函数功能为设置中心频率;
而函数参数是指需要程序设计师根据实际 测试要求的程控仪器型号、设置的参数或读取的测试数据;