従来のNI-488.2コールを使ったパラレルポーリング
従来のNI-488.2コールを使って、パラレルポーリングを行うには、以下の手順に従ってください。各手順には、コード例が示されています。
- デバイスが自身をパラレルポーリング用に構成できる場合を除き、ibppc関数を使ってデバイスをパラレルポーリング用に構成します。
ibppcには、データラインの番号、istsense、および関数がパラレルポール用にデバイスを構成するかどうかを指定するために8ビット値が必要です。ビットパターンは次の通りです。:
0 1 1 E S D2 D1 D0
Eが1の場合、パラレルポーリングを無効にし、0の場合、特定のデバイスに対してパラレルポーリングを有効にします。
istが1の際にデバイスが割り当てられたデータラインをアサートする場合、Sは1になり、istが0の際にデバイスが割り当てられたデータラインをアサートする場合、Sは0になります。
D2からD0は、割り当てられるデータラインの番号を指定します。物理ラインの番号は、バイナリのライン番号に1を加えたものになります。たとえば、DIO3には010というバイナリビットパターンがあります。
次のコード例では、従来のNI-488.2コールを使って、パラレルポーリング用にデバイスを構成します。デバイスは、istが0の場合、DIO7をアサートします。
この例では、ibdevコマンドは、プライマリアドレスが3であり、セカンダリアドレスがなく、タイムアウト時間が3秒で、書き込み操作の最後のバイトでEOIをアサートし、EOS文字を無効にしたデバイスを開きます。
以下のコールは、DIO7のポールに応答し、istが0の場合にラインをアサートするようにデバイスを構成します。 ibppcにバイナリのビットパターン0110 0110または16進の66を渡します。
#include "ni4882.h" dev = ibdev(0,3,0,T3s,1,0); ibppc(dev, 0x66);
GPIBインタフェースがパラレルポールに対してそれ自身を構成する場合でも、ibppc関数を使用する必要があります。ボード指標またはボードユニットデスクリプタ値をibppcの最初の引数として渡します。さらに、インタフェースの個々のステータスビット(ist)を変更する必要がある場合、ibconfig関数でIbcIstオプションを使用します。
次の例で、GPIBインタフェースは、パラレルポールを行うようにそれ自身を設定します。パラレルポールが実行されると、istが1の時に、DIO5をアサートします。
ibppc(0, 0x6C); ibconfig(0, IbcIst, 1);
- ibrppを使って、パラレルポールを実行し、応答の特定の値を確認します。次の例では、パラレルポールを実行して、DIO5に対応する16進の10への応答を比較します。そのビットが設定されていると、デバイスのistは1になります。
char ppr; ibrpp(dev, &ppr); if (ppr & 0x10) printf("ist = 1\n");
- ibppcでパラレルポーリングのデバイスの構成を解除します。ビットパターンでパラレルポールの無効ビット(ビット4)が設定されているビットは、どのような値でも構成を解除するため、16進の70から7Eまでの間ならどの値でも使うことができます。
ibppc(dev, 0x70);
関連項目: