
macOS Sierraで計測器を制御する環境構築
PCと計測器の接続
C++のソースコード
//C++で計測器を制御
#include <stdio.h>
#include "visa.h"
int main(int argc, char* argv[]) {
ViSession rm, inst;
ViStatus viError;
//ネットワークアナライザとの接続確認
viError = viOpenDefaultRM(&rm);
viError = viOpen(rm, "TCPIP::192.168.0.2::inst0::INSTR", VI_NULL, VI_NULL, &inst);
viError = viPrintf(inst, "*IDN?\n");
char buf[256], data[30];
viError = viScanf(inst, "%256t", buf);
printf("*IDN?:%s", buf);
//ネットワークアナライザの設定
viError = viPrintf(inst, "FREQ:STAR 12E6\n");
viError = viPrintf(inst, "FREQ:STOP 15E6\n");
viError = viPrintf(inst, "CALC:MARK1 NORM\n");
viError = viPrintf(inst, "CALC:MARK1:X 13.56E6\n");
viError = viPrintf(inst, "CALC:MARK:FORM DEF\n");
}
3行目にあるように"visa.h"をincludeすることでViSessionやViStatus、viOpen()、viPrintf()などを使用することができます。
13行目の"*IDN?\n"をviPrintf()でネットワーク・アナライザへ書き込むことで計測器の製品名などの情報がinstに格納されます。
16行目でViSettion型からchar型に変換し、取得した情報を表示させています。
ここで、変な文字列が返ってきている場合は、計測器とPCの接続に問題があるまたは11行目の""内の指定に問題がある可能性があります。
正しく情報が取得できていれば計測器とPCの通信を行うことができています。
PCから計測器に命令するときはviError = viPrintf(inst, "");の""内を変えることで様々な指示をすることができます。
詳しい説明は今回は省いていますが大まかな流れは以上となります。
0 件のコメント :
コメントを投稿