複数デバイスNI-488.2コールを使用したシリアルポーリング
NI-488.2ソフトウェアには、SRQサービスとシリアルポーリングを実行するための複数デバイス用NI-488.2コールセットが含まれています。SRQサービスとシリアルポーリングに関係するコールは、AllSpoll、ReadStatusByte、FindRQS、TestSRQ、およびWaitSRQです。次に、それぞれのコールについて説明します。
- AllSpollは、1回のコールで複数のデバイスに対してシリアルポールを実行できます。ポールされた計測器からのステータスバイトを事前に定義された配列に挿入します。次に、各ステータスバイトのRQSビットをチェックして、そのデバイスがサービスを要求したかどうかを確認する必要があります。
- ReadStatusByteは、1つのデバイスからのみシリアルポールを実行するという点以外は、AllSpollと同じです。さらに、デバイスレベルの従来のNI-488.2コールであるibrspにも似ています。
- FindRQSは、サービスを要求しているデバイスを見つけるまで、またはリストのすべてのデバイスをポールするまでデバイスリストに対してシリアルポールを実行します。コールは、サービスを要求しているデバイスの指標とステータスバイト値を返します。
- TestSRQは、SRQラインがアサートされたかどうかを判断し、直ちにプログラムに戻ります。
- WaitSRQは、SRQがアサートされるかタイムアウト時間が経過するまでWaitSRQがアプリケーションを停止する点以外は、TestSRQと同様に機能します。
次の例では、上記のコールを使って、SRQを検出し、どのデバイスがサービスを要求したかを判断します。これらの例では、3つのデバイスがGPIBのアドレス3、4、5にあり、GPIBインタフェースは、バス指標0に指定されています。 最初の例では、FindRQSを使って、どのデバイスがサービスを要求しているかを判断し、2番目の例では、AllSpollを使って、3つのすべてのデバイスにシリアルポールを行います。さらに、両方の例で、WaitSRQを使って、GPIB SRQラインがアサートされるのを待機します。
例1: FindRQSを使用する | |
例2: AllSpollを使用する |
関連項目: