VISA 라이브러리를 사용하여 측정 장비와 통신을 수행합니다.

7797 단어 ExcelVBAC#VISA

처음에



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

좋은 웹페이지 즐겨찾기