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