複数デバイスのアプリケーションの一般的なプログラム手順とサンプル
以下の手順は、アプリケーションで複数デバイス用のNI-488.2コールを使う方法を示したものです。NI-488.2ソフトウェアには、C言語で書かれたサンプル用ソースコードの4882query.cと、gpib-32.dllにダイレクトエントリを使用してアクセスするために書かれたサンプル用ソースコードのdll4882query.cが含まれています。NI-488.2ソフトウェアには、Visual Basicで書かれたサンプルプログラムのquery4882.frmも含まれています。
初期化
手順1. CIC(Controller-In-Charge: コントローラインチャージ)にする
SendIFCを使ってバスとGPIBインタフェースを初期化し、GPIBインタフェースがCIC(Controller-In-Charge: コントローラインチャージ)になるようにします。SendIFCに必要な唯一の引数は、GPIBインタフェース番号で、これは通常GPIB0に対して0です。
手順2. デバイスのGPIBアドレスを判断する
FindLstnを使ってGPIBに接続されているすべてのデバイスを検出します。FindLstn関数には、次のパラメータが必要です。
- インタフェース番号(通常GPIB0に対して0)
- NOADDR定数で終了するプライマリアドレスの一覧
- GPIB上にリスナとして検出され、レポートされたデバイスのGPIBアドレスの一覧
- レポートするGPIBアドレスの最大数
FindLstnを使って、一覧にあるプライマリアドレスすべての存在をテストします。デバイスが特定のプライマリアドレスに存在すると、そのプライマリアドレスがGPIBアドレス一覧に格納されます。それ以外の場合は、指定されたプライマリアドレスのセカンダリアドレスがすべてテストされ、検出されたデバイスのGPIBアドレスがGPIBアドレス一覧に格納されます。GPIBアドレス一覧があると、どのアドレスがデバイスに対応しているかを判断し、そのアドレスをその後のコールで使用することができます。
GPIBデバイスのプライマリアドレスとセカンダリアドレスが分かっている場合は、後続のNI-488.2コールで適切なGPIBアドレスを作成できます。このGPIBアドレスは、下位バイトにプライマリアドレス、上位バイトにセカンダリアドレスを含む16ビット値です。セカンダリアドレスを使用しない場合、セカンダリアドレスは0になります。 例えば、プライマリアドレスが1の場合、16ビット値は0x01になります。 プライマリアドレスが1でセカンダリアドレスが0x67である場合、16ビット値は0x6701になります。
手順3. デバイスを初期化する
DevClearListを使ってGPIB上のデバイスをクリアします。最初の引数はGPIBインタフェース番号です。2番目の引数は手順2でリスナとして検出されたGPIBアドレスの一覧です。
デバイスとの通信
手順4. デバイスと通信する
"*IDN?"クエリを送信して応答を読み取り、デバイスと通信します。多くのデバイスは、デバイスの説明を返すことによってこの問い合わせに応答します。通信方法に関するデバイス特定の指示については、GPIBデバイスに付属のマニュアルを参照してください。
手順4a.
SendListを使って"*IDN?"クエリコマンドを複数のGPIBデバイスに送信します。アドレスは、問い合わせするGPIBデバイスの一覧です。SendListに渡すバッファは、デバイスへのコマンドメッセージです。
手順4b.
各デバイスごとに、Receiveを使ってデバイスからの応答を読み取ります。
必要に応じて、GPIBデバイスとの通信を続行します。