とりあえず、Average完了を待つことは出来た。以下、分かったこと。
- テクトロと違って、現時点でのアベレージ済回数を知るコマンド(正確にはクエリ)は無い
- Digitizeコマンドを送ると、アベレージ完了までだんまりになる
- Digitizeコマンドの直後に、*OPCを送ると、 *ESRレジスタ(Standard Event StatusRegister)のビット1(operation complete bit)をセットしてくれる。
- プログラミングガイドのmyScope.IO.ReadSTBは、VISAの「viReadSTB」と言うコマンドに相当(インプリメントしておくこと)
- STB(ステータスバイト)を読む専用コマンドviReadSTBは、Digitizing中でも有効(と言うかこれしかない)
- STBのビット5(=$20=32)は、*ESRレジスタの異常を検知して1に変化する
- *ESRレジスタのビット0(=$01)は、operation completeを検知(ビット1〜7は他のエラー等を検知)
- *ESRレジスタは読み取り専用。ビット0をイネーブルにするには、専用コマンド*opcが必須。
- 他のビット(1〜7)をイネーブルにすることはないようだ。
- *ESEレジスタの各ビットを0にすると、上の*ESRレジスタの反応をマスクしてくれる。
- 逆に、operation completeだけを検知したければ、「*ESE 1」を打っておけばよい。これが名前(Standard Event Status Enable)の由来
まとめると、
「*eseの値をセーブ、*eseに1をセット、digitizeを打つ、*opcを打つ、stbのビット5を監視、ビットが立ったら*eseの値を戻して終了」
と言うことになる。
(参考文献 Keysight InfiniiVision 2000 X-Series Oscilloscopes Programmer's Guide)
次は、データの転送。