見出し画像

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に戻して実行するとエラーが消えるはず

コード

  1. Ivi.Visa.Interopをインポート

  2. ResourceManager()とFormattedIO488()を宣言

  3. .Open("GPIB0::12::INSTR")で通信開始

  4. .WriteString(送信メッセージ)で送信

  5. .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

git hub

masanori-komiya/TemController (github.com)

いいなと思ったら応援しよう!