zigspef (ADRS, ERRFLG) As Byte | ||
---|---|---|
概要 |
測定器のステータス情報を取得します。 本器のエラー情報は、第2引数 ERRFLG の値から判定できます。 |
|
定義 | 戻り値 (Byte) |
測定器のステータス(1-Byte) (ステータスの各ビット定義は測定器により異なります。) |
ADRS (Byte) |
測定器の GPIB アドレス (0〜30) | |
ERRFLG (Integer) |
本プロシジャを実行後、0以外の値の場合は、本器でエラーが発生して中断した事を意味します。 ERRFLG は参照渡しです。 |
|
例1 | Dim STA Byte Dim ERR As Integer STA = zigspef(ADRS, ERR) 変数 STA には測定器のステータス・バイト・レジスタの値が代入されます。 |
|
例2 | Sub Test() Dim STA, TMP As Byte Dim ERR As Integer Dim ADRS As Byte ADRS = 18 Call zigout(ADRS, "init:cont off") 'スペアナ フリーラン を OFF にして、シングルスイープに設定 Call zigout(ADRS, "init:rest") 'スイープ、リスタート Call zigout(ADRS, "*opc?") ' *OPC? 実行 Do ' シリアル・ポールのループ STA = zigspef(ADRS, ERR) If ERR <> 0 Then MsgBox("エラー") Exit sub STA = zibandbt(STA, 16) ' FLG and 16 (VBAのユーザ関数) Loop While STA <> 16 ' ビット4=1 でループ脱出 TMP = ziginp(ADRS) ' "1"を読取る End Sub Function zibandbt(a As Byte, b As Byte) As Byte zibandbt = (a And b) End Function スペアナのスイープをシングルに設定し、*OPC? を送信します。 測定器のスイープ終了時、ステータス・バイト・レジスタ の ビット5 が1になります。 Doループ文で ビット5 が1の時にループを抜けるようにします。 測定終了時、測定器は "1" のデータを送信します。(*OPC? のスペック) 変数 TMP にその "1" が代入されます。 この "1" を読まないと、測定データを受信したつもりでも、そのデータの先頭に "1" が紛れ込み、 読み取る順番が 1つずれてしまいます。 この手法は、たとえば、スペアナ測定で、16回アベレージの結果を取得する場面で利用できます。 RBW や VBW によってスイープスピードが変わりますので、一定時間待ってからデータ取得するやり方ですと、 そのWAIT時間の設定に悩んでしまいます。 このやり方だと、測定終了を待ってからデータ取得できますし、WAIT時間の設定に悩む事がありません。 |
|
補足 | ●zigspef(ADRS) の動作 (1) GPIBコマンド・モード UNL + UNT + TA + MLA + SPE を送信 (2) 測定器から 1バイトを受信 (3) GPIBコマンド・モード SPD + UNT を送信 |