試水VISA程式設計(2)——一鍵讀取示波器資料
在熟悉了SCPI的語法後,現在開始著手編寫上位機程式。正如Guide檔案所言,上位機可以用多種語言編寫。然而為了借鑑學長的VB程式,所以我也用了VB這種號稱已經要被淘汰的語言。
1、在安裝IO library時會預設安裝一個VISA庫(名為VISA COM 5.9 Type Library)。在專案裡引用它。
2、拖拉控制元件,創立事件等。不必細說。隨意的畫了一個這樣的介面:
3、建立電腦與儀器的通訊!
在使用USB連線的情況下,關鍵程式碼如下:
(函式外已宣告, Public ESG As Ivi.Visa.Interop.IFormattedIO488)
Dim RM As Ivi.Visa.Interop.ResourceManager
Dim response As String
Dim vRes() As String
RM = New Ivi.Visa.Interop.ResourceManager
ESG = New Ivi.Visa.Interop.FormattedIO488
Try
ESG.IO = RM.Open(Visa_Address_TextBox.Text)
ESG.WriteString("*RST")
ESG.WriteString("*IDN?") 'IDN語句後也需要讀出返回值,否則出錯
response = ESG.ReadString
Connect_Status.Text = "裝置已連線"
Connect_Status.ForeColor = Color.Red
Connect_Status.Update()
Visa_Address_TextBox.ReadOnly = True
Exit Sub
Catch ex As Exception
Connect_Status.Text = "連線失敗"
MsgBox("連線超時:" & Err.Description)
End Try
創立ResourceManager物件和FormattedIO488物件,並呼叫IO方法。
4、編寫控制程式碼:
Try
Dim Sine_VPP As String
ESG.WriteString(":MEASURE:VPP? CHANNEL1") ' Query for Pk to Pk voltage.
Sine_VPP = ESG.ReadNumber ' Read VPP.
VPP_Text.Text = Sine_VPP
Dim Sine_Frequency As String
ESG.WriteString(":MEASure:FREQuency? CHANNEL1") ' Query for Pk to Pk voltage.
Sine_Frequency = ESG.ReadNumber ' Read VPP.
Frequency_Text.Text = Sine_Frequency
Catch ex As Exception
MsgBox("尚未連線裝置!")
用FormattedIO488的WriteString方法以及ReadNumber方法即可。值得注意的是,ReadNumber方法返回的似乎也是String型別。
5、執行效果:(直流偏置還沒有做,所以空著)