使用VISA編程入門教程

概述

下圖示出對具有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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章