現在市場上有很多中USB-GPIB 控制器,或叫 USB 轉GPIB鏈接線。 每種GPIB控制器都有它的 函數庫(dll庫)。各種GPIB 控制器的價錢插別很大。這里以一種價錢較便宜的USB-GPIB 控制器UGSimple USB-GPIB 控制器為例,看它的VBA編程時怎么用的。UGSimple USB-GPIB 控制器在淘寶上有賣。
用EXCEL內嵌的VBA編程的好處是 儀器測試讀取的數據可以同時放入EXCEL表格里,並同時進行數據處理。並且VBA 相對其它編程語言來講,容易好學。這里用一個Office 2003的EXCEL 來說明。
拿到UGSimple 以后,首先是安裝 。現將UGSimple插入電腦的USB接口。然后啟動UGSimple_setup.exe,按照它的安裝過程安裝好UGSimple 軟件。
這里用一台 安捷倫的 6位半萬用表 34401A為例。安裝好UGSimple 軟件后,將UGSimple 的GPIB 接頭 (GPIB host)插入34401A的GPIB設備接口 (GPIB device),GPIB接頭插好后,硬件就連接好了。然后,打開 34401A的電源, 設置 34401A的GPIB 地址為 22。
下來該做軟件的工作了。我們先看一下UGSimple是否連接正確。點電腦上的Start->All Programs->LQ Electronics->UGSimple->UGSimple (不好意思,我的電腦是用的英文界面),打開UGSimple 的主控板。在Address欄輸入22,在GPIB command 欄 寫入 *IDN?,然后點擊 主控板上的Command Write鍵,這時,*IDN?指令就送到34401A里去了。然后再點擊 主控板上的Data Read鍵, 如果讀回HEWLETT-PACKARD,34401A,0,11-5-2,則所有連接正確, 見下圖。

打開Office2003 的 EXCEL,在 (2, “B”) 單元格寫入 “直流電壓”,在(2, “D”)單元格寫入“交流電壓”。之后,我們將會把讀到的數據寫入相應的直流或交流電壓下面。點擊菜單 Tools->Macro->Visual Basic. 如果右邊是灰色,點擊左邊的Sheet1(Sheet1),右邊的VBA編輯器就出現了。
首先在最上面寫上 UGSimple 的GPIB 指令 發送函數 Gwrite 和 讀取指令Gread的函數聲明, 以及用於延時的函數Sleep的函數聲明。
Private Declare Function Gwrite Lib "C:\Program Files\LQElectronics\UGSimple\UGSimpleAPI\LQUGSimple_s.dll" Alias "#100" (ByVal address As Integer, ByVal SCPI As String) As Integer
Private Declare Function Gread Lib "C:\Program Files\LQElectronics\UGSimple\UGSimpleAPI\LQUGSimple_s.dll" Alias "#101" (ByVal address As Integer) As String
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
然后在開始VBA 編程。其程序如下,
Private Sub sendread()
Dim command, data As String
Dim success, r As Integer
For r = 3 To 7 '設循環
success = Gwrite(22, "MEAS:VOLT:DC?") '發送直流電壓讀取指令
If success <> "0" Then '判斷發送指令是否成功,
MsgBox ("Something Wrong!") '顯示出錯
GoTo out '退出
End If '判斷結束
Sleep (200) '延時0.2秒,等34401A准備數據
data = Gread(22) '讀取數據
Worksheets("Sheet1").Cells(r, "B") = CDbl(data) '將數據寫入相應欄里
success = Gwrite(22, "MEAS:VOLT:AC?") '發送交流電壓讀取指令
If success <> "0" Then '判斷發送指令是否成功
MsgBox ("Something Wrong!") '顯示出錯
GoTo out '退出
End If '判斷結束
Sleep (800) '延時0.8秒,等34401A准備數據
data = Gread(22) '讀取數據
Worksheets("Sheet1").Cells(r, "D") = CDbl(data) '將數據寫入相應欄里
Next r '下一個循環
out: '退出
End Sub
安裝好的程序里也有EXCEL的例子。
