LoginSignup
2
3

More than 5 years have passed since last update.

Keysightの測定機をUSB接続しVB.netで制御するクラス

Last updated at Posted at 2015-11-19

サンプルソースを元にクラス化してみました。

使用イメージ

SnapCrab_NoName_2015-11-19_16-40-3_No-00.png

例 *IDN?コマンドを送って応答を読む

準備

1.IO Libraries Suite をダウンロード
以下よりダウンロードしインストールする。
http://www.keysight.com/ja/pd-1985909/io-libraries-suite?nid=-33330.977662.00&cc=JP&lc=jpn&cmpid=zzfindiolib
2.VB2010で新しいプロジェクトを作成し、「プロジェクト」-「参照の追加」でVISA COMを追加する。
SnapCrab_NoName_2015-11-19_16-50-23_No-00.png

クラスファイルのソース

以下のクラスをClsUSBDevという名前で追加する

''' <summary>
''' Keysightの測定機をUSBで操作するためのクラス
''' 要 IO Libraries Suite
''' 
''' </summary>
Public Class ClsUSBDev
    ' リソースの宣言
    Dim RM As Ivi.Visa.Interop.ResourceManager ' VISA COM リソースマネージャ
    Dim Dev As Ivi.Visa.Interop.FormattedIO488 ' VISA COM フォーマッテッドIO
    ''' <summary>
    ''' VISAアドレスを指定し測定機を開く
    ''' </summary>
    ''' <param name="VISAAddress">VISAアドレス</param>
    Public Sub open(VISAAddress As String)
        ' VISA リソースの作成
        ' VISA リソースの作成で例外が発生すると処理を抜ける
        Try
            RM = New Ivi.Visa.Interop.ResourceManager
            Dev = New Ivi.Visa.Interop.FormattedIO488
            Dev.IO = RM.Open(VISAAddress)  ' 測定機をオープン
            ' Dev.IO.Timeout = 10000  ' VISA タイムアウト 10秒に設定
            ' Dev.IO.TerminationCharacterEnabled = True  ' TCPソケットで接続する場合
        Catch ex As Exception
            MsgBox("ERROR: VISA COM オブジェクト作成失敗。 " & ex.Message)
            MsgBox("VISA COMオブジェクトの作成が失敗しました。" & ex.Message)
            Exit Sub
        End Try
        MsgBox("VISA COM オープン" & VISAAddress & " 成功")
    End Sub

    ''' <summary>
    ''' 測定機へコマンドを送信
    ''' </summary>
    ''' <param name="cmd">コマンド</param>
    Public Sub output(cmd As String)
        Dev.WriteString(cmd)
    End Sub

    ''' <summary>
    ''' 測定機からの応答を受信
    ''' </summary>
    Public Function input() As String
        Try
            Return Dev.ReadString()
        Catch ex As Exception
            MsgBox("ERROR: " & ex.Message)
            Return ""
            Exit Function
        End Try
    End Function

    ''' <summary>
    ''' 終了処理
    ''' </summary>
    Protected Overrides Sub Finalize()
        Dev.IO.Close()
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Dev)
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(RM)
    End Sub

End Class

クラスの呼び出し側の例

Form1に以下を追加する。
1.Visaアドレス用にTxtVisaAddress テキストボックスと BtnOpenボタンを置く
2.送信メッセージ用にTxtTxテキストボックスと BtnTxボタンを置く
3.受信メッセージ用にTxtRxテキストボックスと BtnRxボタンを置く
4.Form1の中のソースを以下に変更

vb.net
Public Class Form1

    Dim FC1 As ClsUSBDev

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        FC1 = New ClsUSBDev
    End Sub

    Private Sub BtnOpen_Click(sender As System.Object, e As System.EventArgs) Handles BtnOpen.Click
        FC1.open(TxtVisaAddress.Text)
    End Sub

    Private Sub BtnTx_Click(sender As System.Object, e As System.EventArgs) Handles BtnTx.Click
        FC1.output(TxtTx.Text)
    End Sub

    Private Sub BtnRx_Click(sender As System.Object, e As System.EventArgs) Handles BtnRx.Click
        TxtRx.Text = TxtRx.Text & FC1.input & vbCrLf
    End Sub
End Class

使い方

1.IO Libraries Suiteをインストールしたときに、「Keysight Connection Expert」というアプリがインストールされるので、それを起動する。
2.「測定機 例33220A」が表示されれば接続しているので、右側の「VISA Address」をコピーする
 例 USB0::0x0957::0x0407::MY44034395::0::INSTR

SnapCrab_NoName_2015-11-19_17-2-22_No-00.png

3.TxtVisaAddress に上記のアドレス(USB0::0x0957::0x0407::MY44034395::0::INSTR)をコピーしBtnOpenをクリック
4.TxtTxに「*IDN?」を入れBtnTxをクリック
5.BtnRxをクリック。TxtRxに測定機からの応答が入ればOK。

SnapCrab_NoName_2015-11-19_16-40-3_No-00.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3