zigopcf (ADRS, DET, TOUT, ERRFLG, CRLF) | ||
---|---|---|
概要 |
以下の機能を実行します。 ・ クエリ *OPC? の送信 ・ 測定器のステータス・バイト・レジスタ の受信 ・ ステータス バイトの 監視 (監視ビットがTrueの時、本プロシージャは終了) ・ 測定器から送信する "1" を受信 (これは コマンド *OPC? の仕様) |
|
定義 | 戻り値 | 無し |
ADRS (Byte) |
測定器の GPIB アドレス (0〜30) | |
DET (Byte) |
ループを抜ける値。 (0〜255) 0 を代入した場合、DETの値ではループは抜けられません。 TOUT(タイムアウト)の時間でループを抜ける事になります。 |
|
TOUT (Byte) |
ループのタイムアウト (sec) (1〜30) | |
ERRFLG (Integer) |
本プロシジャを実行後、0以外の値の場合は、本器でエラーが発生して中断した事を意味します。 ERRFLG は参照渡しです。 |
|
CRLF (Byte) |
終端コード 下位 3ビットで制御します。(ビット2=EOI, ビット1=CRLF, ビット0=LF) ・ビット2=1: EOI ピンでデータの終端とします。 ・ビット1=1: CR と LF の連続コードを終端とします。 ・ビット0=1: LF のコードを終端とします。 この引数は、*OPC? の送信 と "1" の受信に利用します。 |
|
例 | Dim ERR As Integer Dim ADRS As Byte ADRS = 18 Call zigout(ADRS, "*rst") '測定器リセット Call zigopcqf(ADRS, 16, 10, ERR) 測定器に *RST を送信し、zigopcqf()を実行する事で、測定器のリセット完了後に本プロシージャが終了し、 プログラムは次のステップに進む事ができます。 DET=16 : 測定器のステータス・バイト・レジスタ と 16 のバイナリand を取り、1以上の時に本プロシージャは終了します。 TOUT=10 : ステータス・バイト・レジスタ と 16 の バイナリand 結果が 0 でも、10秒で本プロシージャは終了します。 本プロシージャ実行後、変数ERR が 0以外の時、本器でエラーして中断した事を意味します。 zigspef() で *OPC? を実行するより、本プロシージャの方が VBA側の記述が少なく楽です。 |
|
補足 | ● 本プロシージャの流れ。 (1) *OPC? を測定器に送信。 (2) シリアルポール コマンド を測定器に送信。 (3) シリアルポールに対する測定器の戻り値(1バイト)を受信。 (4) 第3引数 TOUT 以下の時間経過であれば、(2) にジャンプ。 (5) 戻り値 と 第2引数 DET のバイナリand を演算し、0であれば(2)にジャンプ。(対象ビットがFalseの為) 0以外の時、(6)に進む。 (6) 測定器よりテキスト"1" を受信。 (7) 本プロシージャを終了。 ● *OPC? の仕様 *OPC? の直前のコマンドが終了すると、測定器はテキスト"1"を返します。 コントローラ側は "1" を受信する事で、*OPC? の直前のコマンドに対する動作が終了した事が分かります。 |