C++ visa通信

#include <visa.h> // Keysight IOライブラリ・スイートのヘッダーファイル

#include <iostream>
#include <string>

int main() {
    ViSession defaultRM, instr;
    ViStatus status;
    ViChar buffer[256];

    // VISAデバイスの初期化
    status = viOpenDefaultRM(&defaultRM);
    if (status < VI_SUCCESS) {
        std::cerr << "Error opening VISA Resource Manager" << std::endl;
        return 1;
    }

    // VISAデバイスのオープン
    status = viOpen(defaultRM, "USB0::0x1234::0x5678::INSTR", VI_NULL, VI_NULL, &instr);
    if (status < VI_SUCCESS) {
        std::cerr << "Error opening device" << std::endl;
        return 1;
    }

    // VISAデバイスにクエリを送信して応答を取得
    status = viQueryf(instr, "*IDN?", "%t", buffer);
    if (status < VI_SUCCESS) {
        std::cerr << "Error querying device" << std::endl;
        return 1;
    }

    // 応答を表示
    std::cout << "Instrument ID: " << buffer << std::endl;

    // VISAデバイスのクローズ
    viClose(instr);
    viClose(defaultRM);

    return 0;
}