ziGPIB2550 分室


zigspe()


■ 測定器からテキストを受信します。
zigspe (ADRS) As Byte
概要
シリアルポール(SPE)を送信し、測定器から返ってくる値 (ステータス・バイト・レジスタ) を戻します。
定義 戻り値
(Byte)
SPEの結果 (測定器のステータス・バイト・レジスタ) (1-Byte)
ADRS
(Byte)
測定器の GPIB アドレス (0〜30)

例1 Dim STA As Byte
STA = zigspef(ADRS)

変数 STA には測定器のステータス・バイト・レジスタの値が代入されます。
ステータス・バイト・レジスタの各ビット定義は測定器により異なります。

例2 Sub Test()
  Dim STA As Byte
  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)
     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 を送信