VB.net で計測機器制御
Cryogenic Controlの温度計をコントロールするwindowsアプリをVB.netで作成したのでメモ
使ったもの
・Cryogenic Controlの温度計Model32(かなり古いやつ)
・NI GPIB-USB-HSケーブル(研究室にあったものだけど結構高い)
・windows10のPC
インストールしたもの
・visual studio2022
・NI-VISA(2023 Q2)
・NI-488.2(2022 Q4)
・VB.net 8.0
・.net Framework 4.8
・.net Framework 3.5
環境構築手順
1. visula studio2022をインストール (VB系の項目にはチェックをいれる)
2. NI-VISAとNI-488.2をインストール
3. Visual Studioで新しいプロジェクトを作成する
4. Windows フォーム アプリケーション(.NET Framework)を選択。(.NET 8.0の場合はWindows フォームアプリを選択)
5. ターゲットフレームワークを(.NET Framework 4.8)にする。
6. 上タブのプロジェクトから参照の追加を選択
7. Ivi.Visa Assembly(.NET Frameworkの場合のみ)チェックを入れる
8. VISA COM 488.2 Formatted I/O 5.14, VISA COM 5.14 Type Libraryにチェックを入れOK
8. ソリューションエクスプローラーの参照にIvi.Visa, VisaComLibが追加されているのを確認。
9.一度ビルド(実行)、ここでエラーが出る場合は上タブのプロジェクトからプロパティを選択
10. ターゲットフレームワークを.NET Framework 4.8から.NET Framework 3.5に変更し、ビルド
11.もう一度.NET Framework 4.8に戻して実行するとエラーが消えるはず
コード
Ivi.Visa.Interopをインポート
ResourceManager()とFormattedIO488()を宣言
.Open("GPIB0::12::INSTR")で通信開始
.WriteString(送信メッセージ)で送信
.ReadString()で読み取り
Imports Ivi.Visa.Interop
Public Class Form1
Private RM As New ResourceManager()
Private CTC As New FormattedIO488()
Private ChannelA As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.CTC.IO = Me.RM.Open("GPIB0::12::INSTR")
Me.CTC.WriteString("INPUT? A")
Me.ChannelA = Me.CTC.ReadString()
End Sub
EndClass
VB. 8.0の時はこう
Public Class Form1
Private RM As New VisaComLib.ResourceManager
Private CTC As New VisaComLib.FormattedIO488
Private ChannelA As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.CTC.IO = Me.RM.Open("GPIB0::12::INSTR")
Me.CTC.WriteString("INPUT? A")
Me.ChannelA = Me.CTC.ReadString()
End Sub
EndClass