使用VISA编程(转)
来源:互联网 发布:sql创建默认值 编辑:程序博客网 时间:2024/05/16 06:22
概述
下图示出对具有VISA的仪器进行控制的流程。当用可视Basic语言(Visual Basic languagee)开发VISA程序时,必须回顾一个特殊的编程注意事项(在下面列出的自述文本文件中)。
有关VISA程序库的利用以及利用带有E5071A宏程序(E5071A VBA)的VISA的编程注意事项的详情,请参考包含在IO程序库光盘(CD-ROM)上的下列文件。
visa.hlp (VISA程序库的在线帮助)。
vbreadme.txt (对利用具有VB的VISA程序库的注释)。
使用VISA控制仪器的流程
第1步:起动VISA
样本程序ctrl_ext.vba. 中的90行处理VISA系统起动对话。VISA的viOpenDefaultRM功能对VISA系统进行初始化和起动。viOpenDefaultRM 功能必须在调用其它VISA功能之前执行,而这个功能的参数是起动信息(ctrl_ext.vba中的Defrm)。
语法
viOpenDefaultRM(param)
参数
参数
(param)
说明
起动信息(输出)
数据类型
长整型
第2步:连接
130行处理连接对话。VISA的viOpen功能进行与规定仪器的连接。viOpen功能返回某个值,使得VISA功能可以将其应用于规定仪器,这个功能的参数是起动信息(Defrm)、规定仪器的地址信息(ctrl_ext.vba中的“GPIB::17::INSTR”)、接入方式(ctrl_ext.vba中的0)、超时(ctrl_ext.vba中的0)和连接信息(ctrl_ext.vba中的Equip)。
语法
viOpen(param1, param2, param3, param4, param5)
参数
参数
(param1)
说明
起动信息(输入)
数据类型
长整型
参数
(param2)
说明
规定仪器的地址信息(输入)
数据类型
字符串型
语法
"GPIB0::gpib address::INSTR"
"USB0::manufacturer ID::model code::serial number::0::INSTR"
(ex. "USB0::2391::2312::MY12345678::0::INSTR")
"TCPIP0::IP address::inst0::INSTR"
参数
(param3)
说明
接入方式(输入0)
参数
(param4)
说明
超时(输入0)
参数
(param5)
说明
连接信息(输出)
数据类型
长整型
第3步. 通信
170行进行通信对话。VISA的viVPrintf功能将程序消息(GPIB命令)发送到规定仪器。这个功能的参数是连接信息(Equip)、程序消息(*EDN?)和待格式化变量(ctrl_ext.vba中的0)。
为了输入/输出GPIB命令,主要是利用viVPrintf 功能和viVScanf功能信息,但也可以利用其它VISA功能。欲知详情,请参考visa.hlp (VISA程序库的在线帮助)。
语法
viVPrintf(param1, param2, param3)
参数
参数
(param1)
说明
连接信息(输出)
数据类型
长整型
参数
(param2)
说明
发送GPIB命令的程序消息时的程序消息,消息结束处要求一个消息终结符(ctrl_ext.vba中的Chr$(10))
数据类型
字符串型
参数
(param3)
说明
变量待格式化,若不可应用,则输入0。
数据类型
规定的数据类型
210行控制接收对话。VISA的viVScanf 功能接收来自规定仪器的结果,并将其存储在输出变量中。这个功能的参数是连接信息(ctrl_ext.vba中的Equip)、输出变量的格式参数(ctrl_ext.vba中的%t)和输出变量(ctrl_ext.vba中的Prod)。
语法
viVScanf(param1, param2, param3)
参数
参数
(param1)
说明
连接信息(输入)
数据类型
长整型
参数
(param2)
说明
输出变量的格式参数
数据类型
字符串型
参数
(param3)
说明
输出变量(输出)
数据类型
字符串型
第4步: 断开
280行处理断开对话。VISA的 viClose 功能将通信中断并使VISA系统终结,这个功能的参数是起动信息(ctrl_ext.vba中的Defrm)。
语法
viClose(param)
Parameter
参数
(param)
说明
起动信息(输入)
数据类型
长整型
样本程序 用来读出外围设备(仪器)产品信息
ctrl_ext.vba 是利用E5071C作为系统控制器时,控制通过USB/GPIB接口电缆连接的仪器的样本程序。这个VBA程序由下列程序模块组成。
对象名
模块类型
内容
mdlVisa
标准模块
读出外部仪器的产品信息。
模块1
模块2
标准模块
利用VISA程序库的两个定义文件
当您由E5071C VBA来控制外围设备时,利用对仪器提供的GPIB命令经VISA进行通信。相反,当您由E5071C VBA来控制仪器本身时,则利用对仪器提供的COM对象进行通信。
90行到100行
对VISA系统进行初始化和起动,并将起动信息输出到Defrm变量。在这个过程期间,若发生差错,程序便转到错误处理程序(320行到360行)。
130行到140行
建立与经GPIB连接的外部仪器(GPIB地址:17)的连接,并将连接信息输出到Equip变量。在这个过程期间,若发生差错,程序便转到错误处理程序(320行到360行)。
170行到180行
查询利用VISA经USB/GPIB接口电缆连接的外部仪器的产品信息,在这个过程期间,若发生差错,程序便转到错误处理程序(320行到360行)。
210行到250行
通过VISA对产品信息进行检索,并将产品信息输出到Prod变量。在消息框中显示读出结果。在这个过程期间,若发生差错,程序便转到错误处理程序(320行到360行)。
280行
中断通信并使VISA系统终结。
320行到360行
若VISA功能发生差错,将显示错误的细节并使程序终结。
读出产品信息(ctrl_ext.vba)
10| Sub Main()
20|
30| Dim status As Long 'VISA function status return code
40| Dim Defrm As Long 'Session to Default Resource Manager
50| Dim Equip As Long 'Session to instrument
60| Dim Prod As String * 100 'String to receive the result
70|
80| ' Initializes the VISA system.
90| status = viOpenDefaultRM(Defrm)
100| If (status <> VI_SUCCESS) Then GoTo VisaErrorHandler
110|
120| ' Opens the session to the specified instrument.
130| status = viOpen(Defrm, "GPIB0::17::INSTR", 0, 0, Equip)
140| If (status <> VI_SUCCESS) Then GoTo VisaErrorHandler
150|
160| ' Asks for the instrument's product information.
170| status = viVPrintf(Equip, "*IDN?" & Chr$(10), 0)
180| If (status <> VI_SUCCESS) Then GoTo VisaErrorHandler
190|
200| ' Reads the result.
210| status = viVScanf(Equip, "%t", Prod)
220| If (status <> VI_SUCCESS) Then GoTo VisaErrorHandler
230|
240| ' Displays the result.
250| MsgBox Prod
260|
270| ' Closes the resource manager session (which closes everything)
280| Call viClose(Defrm)
290|
300| GoTo Prog_end
310|
320| VisaErrorHandler:
330| Dim VisaErr As String * 200
340| Call viStatusDesc(Defrm, status, VisaErr)
350| MsgBox "Error : " & VisaErr, vbExclamation
360| Exit Sub
370|
380| Prog_end:
390|
400| End Sub
转自:http://ena.tm.agilent.com/e5071c/manuals/webhelp/chn/Programming/VBA_Programming/Controlling_Peripherals/Programming_with_VISA.ht
- 使用VISA编程(转)
- 仪器编程VISA
- linux下调visa库编程
- visa
- 试水VISA编程(1)——对仪器的基本的控制
- 试水VISA编程(2)——一键读取示波器数据
- 【转】分享 Visa 问题准备
- 如何使用VS2010调用visa进行程控
- 庆祝帖子(搬家+ USA Visa)
- VBScripts and UAC elevation(visa以后的系统)
- 申请苹果开发者账号支付(没有Visa怎么办?)
- visa interview
- UK Visa
- VISA操作
- VISA操作
- VISA操作
- VISA错误代码
- VISA错误代码
- python 重载运算符
- PLSQL导入Excel文件预览不到数据行问题
- java判断IP是否在某个网段中
- linux命令详解
- Linux内核printk实现
- 使用VISA编程(转)
- java中Timer的用法
- 12-13java面向对象之继承
- cp scp命令使用
- 提供一段JavaScript脚本以辅助迅雷下载页面中的所有pdf文件链接
- 黑马程序员——面向对象的总结
- NSMutableAttributedString 的使用方法,设置格式
- 基于CentOS-6.3-x86_64-mini自定义镜像
- 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找