ziGPIB2550 分室

zigspef()


■ 測定器からテキストを受信します。(エラーフラグ有り)
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 を送信