はじめに
KEYSIGHT 3458A を CONTEC社製 GPIBケーブルを用いて WindowsPC から 最小限の制御が出来たので
メモ書きを兼ねて記述をする
--
1.API-PAC(Win32)のインストール
以下のページより ドライバライブラリ API-GPIB(WDM) for USB GPIB通信ドライバ 開発環境(フルセット) Ver. 4.xx をダウンロードする
https://www.contec.com/jp/download/donwload-list/?itemid=311d6ea4-124f-400c-a55d-daa01a477c90
Zip File を解凍後に "LYAS06GPIB_4xxF\APIPAC\GPIBWDM\Disk1" より Setup.exe を実行することで以下の様な構成でファイルが置かれる。
GPIBのツールとして ConRec.exe / Master.exe / Slave.exe があり、それぞれのソースコードが存在する。
2.ソースコードの修正
KEYSIGHT 3458A と コンテック製 GPIBケーブル[GPIB通信マイクロコンバータ(USB2.0対応)] を接続しても ConRec.exe / Master.exe / Slave.exe は、
正常動作しない。 原因は、ConRec.exe などのツールは、IEEE 488.2標準 に準拠しているのに対して 3458A は、独自コマンドなのが原因であった。
そこで、ソースコードを修正することにした。私がトライしたのは、ConRec.exe のソースコードで
C:\Program Files (x86)\CONTEC\API-PAC(W32)\GPIBWDM\Sample\Vc2013\ConRec
に置かれた Microsoft Visual C++ (MFC) を用いた。
開発環境は、Microsoft Visual Studio 2022 (64 ビット) であり 提供されているソースコードを開くと 2022用に更新され問題無くコンパイルされ
作成された ConRec.exe も動作した。
ソースコードの具体的な変更箇所は、以下の通り
368行目~404行目にかけて
※共通コマンド *IDN? を独自コマンド ID? に変更するだけ!!
//機器情報問い合わせ(送信)
//wsprintf(szSendBuf, _T("*IDN?")); //送信データ
/* KEYSIGHT 3458Aは、IEEE488.2規格でなく 独自*/
wsprintf(szSendBuf, _T("ID?")); //送信データ
endif
//受信データがIEEE488.2規格か確認
/* (strstr(RecBuf, ",") > 0) {
//アドレス情報を結合
wsprintf(EqpInforBuf, _T("Address:%d %S"), AddrArray[ArrayCount], RecBuf);
}
else {
//受信データがIEEE488.2規格でない場合、アドレス情報のみ
wsprintf(EqpInforBuf, _T("Address:%d"), AddrArray[ArrayCount]);
}*/
/* KEYSIGHT 3458Aは、IEEE488.2規格でなく 独自*/
wsprintf(EqpInforBuf, _T("Address:%d %S"), AddrArray[ArrayCount], RecBuf);
以上の結果、下記の制御画面で
①初期化 -> ②相手機器検索 (HP3458Aと表示)
③TEMP? とデータを 3458Aに送信する
④上記に対する応答 (現在の温度 25.7℃) が受信できる。
尚、SRQ(Service Request)イベント受信データについては その使い方が不明で タイマーを利用して現在の測定出力値を取得出来る様に改造した。
☆2021年12月21日(火) 午前12時00分 初版(Ver1.00) 作成