1. 程式人生 > >試水VISA程式設計(2)——一鍵讀取示波器資料

試水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、執行效果:(直流偏置還沒有做,所以空著)