サンプルソースを元にクラス化してみました。
例 *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を追加する。
#クラスファイルのソース
以下のクラスを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の中のソースを以下に変更
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
3.TxtVisaAddress に上記のアドレス(USB0::0x0957::0x0407::MY44034395::0::INSTR)をコピーしBtnOpenをクリック
4.TxtTxに「*IDN?」を入れBtnTxをクリック
5.BtnRxをクリック。TxtRxに測定機からの応答が入ればOK。