VXIpnp基于HP-VISA库的VXI总线测试应用编程
来源:互联网 发布:美即和一叶子知乎 编辑:程序博客网 时间:2024/05/17 17:15
〔关键词〕 vxi总线 hp-visa库 测试 编程
一、引言
vxi总线是一种基于模块化概念的标准仪器控制总线技术体系。经过十年来的发展,目前已在自动测试、虚拟仪器及其它相关专业领域内得到了广泛应用。随着这一概念及技术的高速发展,在大型应用系统的设计中,往往会碰到不同厂商仪器模块,不同接口类型等之间的兼容性与互操作性问题。为此,vxi即插即用联盟为vxi模块专门制定了统一的软、硬件标准,并于1996年底开发了一套visa(virtualinstrumentsoftwarearchitecture)库。它为用户提供了一套独立且易用的低层i/o库及相应的函数接口,使用户可以方便地开发与仪器、接口类型无关的测试应用。目前,vxi库可以支持的操作系统包括:win、win95/nt、sun、hp-ux等。支持的语言及开发环境有:c/c++(vc、bc)、vb、labview、labwindows/cvi、hpvee等。同时,作为一种通用的i/o标准,visa与仪器、接口类型无关的特性,也为开发人员提供了方便,并大大缩短了开发周期。
本文将结合hpvisa1.0中的有关内容,以win95平台上的vc语言为例详细讨论vxi总线测试应用编程中的有关细节。
二、基于visa库的编程细节
1.相关的头文件及库文件
在应用源程序的开头应包含对visa库头文件visa*h的引用,一般该文件在../vxipnp/win95/include子目录下。visa*h头文件中主要是对visa库函数的原型声明及相关常量、错误码的定义。它还自动包含了另一个头文件visatype*h,该文件中包括了visa库中用到的数据类型的定义。
另外,在工程文件中还需加入visa静态库visa32.lib。该文件在../vxipnp/win95/lib/msc子目录下。
2.会话的建立与关闭
会话(session)即与设备进行通讯的通道。在基于visa库编程中,与任何一个设备(包括仪器、pc机甚至打印机等)通讯之前,都必须首先与之建立一个会话。通讯结束后,应关闭这一会话。
最先建立的应是由资源管理器之间的会话,它管理所有的资源,并成为其后打开的所有会话的“文”会话。这由以下函数调用完成:
viopendefaultrm(sesn);
sesn是一个visession类型的变量指针,所指的值为资源管理会话句柄。
接下来,为每一个需要与之通信的设备建立一个会话:viopen(sesn,rsrc-name,accessmode,timeout,vi);rsrcname为设备地址,vi指向设备会话句柄。
设备地址为标识某一设备的字串,通常由visa接口类型标识及设备的逻辑地址两部分组成。具体内容可参见下表:
接口类型设备地址示例
vxivxio::24
gpib-vxigpib-vxi::128
gpibgpibo::7::0
asrlasrl::instr
在与设备通讯结束后,应调用viclose(vi)函数关闭会话。这样可以释放会话所占用的数据结构资源。
最后,应关闭资源管理会话。
3.资源
如前所述,资源管理会话负责管理所有的资源。可以通过它来查询指定资源及与其相关的会话。
vifindrsrc函数:对某一接口查询指定的设备资源,并返回匹配项。
vifindnext函数:与vifindrsrc配对使用,用于对有多个匹配项的列表。
4.i/o命令
一旦与设备的会话建立之后,就可以利用visa库中的i/o函数与设备进行通讯,visa库中提供了两类i/o方式。
①格式化i/o
提供了一种类似于ansi-c语言stdio中格式化输入输出方式的操作能力。包括:
viprintf函数:将格式化的数据写入设备。
vivprintf函数:与viprintf函数功能类似。
viscanf函数:从设备中读出数据并按照给定的格式转换。
viqueryf函数:向设备写入一个格式化后的数据串,并接受及转换响应数据。
其它vivscanf及vivqueryf函数分别与viscanf及viqueryf函数功能类似。
数据的格式是由一个格式字串确定的,具体格式与ansi-c语言相同。
②无格式i/o
无格式i/o直接发送或接收原始数据,不经过格式转换过程。它所执行的是一种低层的i/o操作,因此在对同一个会话的i/o中,不能混用格式化i/o与无格式i/o两种方式。
viread函数:从设备读出数据并存放于缓冲区;
viwrite函数:将缓冲区中数据写入设备。
这两个函数执行的是同步操作方式,另外:
vireadasync函数:功能与viread相似,只是以异步方式读数据,即在读操作结束之前就可以返回。函数返回一个jobid用以标识尚未完成的操作。可以利用viterminate函数强制结束它,或直到操
- VXIpnp基于HP-VISA库的VXI总线测试应用编程
- vxi总线
- 基于HP ALM的应用质量管理
- linux下调visa库编程
- 基于VISA的编程中,ViString与CString之间转换的关系
- 基于树莓派3的CAN总线编程
- VXI和PXI的区别
- 基于C8051F040单片机的CAN总线测试模式研究
- 基于TMS320LF2407和CAN总线的通信应用系统设计
- 基于应用服务器的测试
- 基于uclinux 的CAN 总线嵌入式驱动编程
- 基于uclinux 的CAN 总线嵌入式驱动编程
- JNI-VISA应用攻略
- 仪器编程VISA
- 【软件测试】基于应用服务器的测试
- HP的性能测试周期
- 采用C/S结构搭建VXI网络测试系
- 基于CMW500的数据应用测试
- linux下javaEE环境搭建(java6 mysql5 tomcat6 myeclipse8.0 安装过程及常见问题)
- Java与设计模式(02)--工厂方法模式
- C++ map 使用
- SQl,PL/SQL和SQL*Plus之间的区别
- FreeBSD 安装vim 编辑器
- VXIpnp基于HP-VISA库的VXI总线测试应用编程
- linux i18n修改,中文版英文版体现
- multimap 使用方法
- [LeetCode] Gray Code
- WinCE 字体平滑 ClearType
- 最近的一点点小心得
- 教你改变const变量的值
- Qt生成插件和主程序中加载插件
- Android回调方法示例