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
Reference
이 문제에 관하여(VISA 라이브러리를 사용하여 측정 장비와 통신을 수행합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shikasama/items/d79ac0794881d8f38f5b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(VISA 라이브러리를 사용하여 측정 장비와 통신을 수행합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shikasama/items/d79ac0794881d8f38f5b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(VISA 라이브러리를 사용하여 측정 장비와 통신을 수행합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shikasama/items/d79ac0794881d8f38f5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)