ziginp (ADRS, ERRFLG, TOUT, CRLF) As String | ||
---|---|---|
概要 |
測定器から送られたテキストを PC が受信します。 本器のエラー情報、第2引数 ERRFLG の値から判定できます。 |
|
定義 | 戻り値 (String) |
受信したテキスト (最大 65530文字) |
ADRS (Byte) |
測定器の GPIB アドレス (0〜30) | |
ERRFLG (Integer) |
本プロシジャを実行後、0以外の値の場合は、本器でエラーが発生して中断した事を意味します。 ERRFLG は参照渡しです。 |
|
TOUT (Byte) |
測定器からテキストが来ない時、TOUT(sec) で本プロシージャを終了します。 TOUT=0: PICマイコンの EEPROM の値を使用します。 TOUT=1〜30: 指定した時間(秒) が使用されす。 TOUT>30: PICマイコンの EEPROM の値を使用します。 TOUT=省略: VBA側で TOUT=0 が設定され、EEPROM の値が使用されます。 |
|
CRLF (Byte) |
終端コード 下位 3ビットで制御します。(ビット2=EOI, ビット1=CRLF, ビット0=LF) ・ビット2=1: 最後の1文字の区間、EOI ピンを Low にします。 ・ビット1=1: 最後にASCIIコード CR(0x0D) と LF(0x0A) のデータを追加送信します。 ・ビット0=1: 最後にASCIIコード LF(0x0A) のデータを追加送信します。 |
|
例 CRLF=5: LF の受信 or EOIピン=Low の時、本関数を終了します。 例 CRLF=7: LF の受信 or CR+LF の受信 or EOIピン=Low の時、本関数を終了します。 例 CRLF=2: CR+LF の受信の時、本関数を終了します。 例 CRLF=255〜8 or 0: PICマイコンの EEPROM の終端コードで本関数を終了します。 例 CRLF=省略: VBA側で CRLF=0 が設定され、EEPROM の終端コードが利用されます。 |
||
例 | Dim ERR As Integer Cells(1, 1).Value = ziginp(17, ERR) GPIBアドレス17 の測定器から送られたテキストは、Excel の一番左上のセルに代入されます。 受信テキストが数字のみの時、数値に自動変換され (Excel のデフォルト機能)、セルに代入されます。 第3引数(TOUT) を省略したので、タイムアウト値(sec) は EEPROM の値を使用します。 第4引数(CRLF) を省略したので、終端コードは、EEPROM の終端コードを使用します。 本プロシージャ実行後、変数ERR が 0以外の時、本器でエラーして中断した事を意味します。 |
|
補足 | ● 第3引数 TOUT の用途: 実行中にエラーが判明した時は直ぐにプログラムを終了したいと思います。(デバッグ中) その為、EEPROM のタイムアウトの初期値は短めの 3(sec) に設定しています。 長い測定時間を必要とする部分の ziginp() プロシージャ だけ、個別に長いタイムアウト値が欲しくなる事を想定して 第3引数 TOUT を用意しました。 ● 第4引数 CRLF の用途: 通常、第3引数 CRLF は省略したいものです。EEPROM の 終端コード の設定を LF※ にした場合、 CR+LF の終端コードを測定器から受信すると、最後の CR コードがデータに混じってしまい、 Excel が数値と判定しない為、Excel 側で CR を取り除く処理が追加的に必要になります。 このような状態を想定して、プロシージャで終端コードが指定できるようにしました。 ※ 80年代(アジレント) の測定器の終端コードは CR+LF が多く、90年代以降は LF のみのようです。 古い世代の測定器が混入している場合に、このような事が発生します。 ただし、EEPROM の 終端コードを 7 に設定していると、CR+LF でも、LF でも、EOI でも 本器は終端するので、このような状態にならないようです。 |