5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VISAライブラリを用いて計測機器と通信を行う。

Posted at

#初めに
VISAはVirtual Instrument Software Architectureの略で測定機器と通信を簡単にできるぱないやつ:laughing:
VISAライブラリはいろんな会社が実装していてるがここではナショナルインスツルメンツ社が提供しているNI-VISAを使用していくよ。
ダウンロードとインストール、参照設定については割愛するよ。
計測機器はRIGOL社のDS1054Zを使用するよ。
リモートコマンドについてはMSO1000Z Programming Guideを見れば載っているよ:sunglasses:

#C# のやつ

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Ivi.Visa.Interop;
using System.IO;

namespace Sample
{
	public partial class Form1 : Form
	{
        ResourceManager rm;
        FormattedIO488 inst;
        
        public Form1()
        {
            InitializeComponent();
        }
        
        private void buttonConnect_Click(object sender, EventArgs e)
        {
            rm = new ResourceManager();  // リソース
            inst = new FormattedIO488(); // 機器と通信をしてくれるオブジェクト
            
            // チェックボックスでLAN接続か、USB接続か選び、リソース文を作成する
            string deviceResource = "";
            if(radioButtonLAN.Checked)
            {
                deviceResource = "TCPIP::XXX.XXX.XXX.XXX::INSTR";
            }
            else if(radioButtonUSB.Checked)
            {
                deviceResource = "USB0::0xXXXX::0xXXXX::XXXXXXXXXXXXXX::0::INSTR";
            }
            
            try
            {
                inst.IO = (IMessage)rm.Open(deviceResource, AccessMode.NO_LOCK, 0, ""); // 機器と接続
                inst.IO.Timeout = 10000;
                
                // 測定器のIDを取得する
                inst.WriteString("*IDN?");
                string returnStr = inst.ReadString(); // 応答を文字列で取得する
                
                textBoxReceiveStr.Text = "[IDN]:\r\n" + returnStr;
                textBoxReceiveStr.Refresh();
            }
            catch (System.Runtime.InteropServices.COMException ex)
            {
                MessageBox.Show(ex.Message, "errorcode: 0x" + Convert.ToString(ex.ErrorCode, 16));
            }
        }
	}
}

ExcelVBAのやつ

Sub QueryIdn()
    Dim viDefRm As Long // 起動情報
    Dim viDevice As Long // 接続情報
    Dim viErr As Long // 完了コードまたはエラーコード
    Dim cmdStr As String
    Dim idnStr As String * 128
    Dim ret As Long

    viErr = visa.viOpenDefaultRM(viDefRm) // 初期化と起動
    viErr = visa.viOpen(viDefRm, "USB0::0xXXXX::0xXXXX::XXXXXXXXXXXXXX::0::INSTR", 0, 5000, viDevice) // 機器と接続する
    
    // 測定器のIDを取得する
    cmdStr = "*IDN?"
    viErr = visa.viWrite(viDevice, cmdStr, Len(cmdStr), ret) // コマンド書き込み
    viErr = visa.viRead(viDevice, idnStr, 128, ret) // 応答読み込み
    Sheet1.Cells(2, 2) = idnStr
    
    // 解放
    visa.viClose (viDevice)
    visa.viClose (viDefRm)
End Sub
5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?