従来のNI-488.2コールを使ったパラレルポーリング

NI-488.2

従来のNI-488.2コールを使ったパラレルポーリング

従来のNI-488.2コールを使って、パラレルポーリングを行うには、以下の手順に従ってください。各手順には、コード例が示されています。

  1. デバイスが自身をパラレルポーリング用に構成できる場合を除き、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);
    
  2. ibrppを使って、パラレルポールを実行し、応答の特定の値を確認します。次の例では、パラレルポールを実行して、DIO5に対応する16進の10への応答を比較します。そのビットが設定されていると、デバイスのistは1になります。
    char ppr;
    ibrpp(dev, &ppr);
    if (ppr & 0x10)
    printf("ist = 1\n");
    
  3. ibppcでパラレルポーリングのデバイスの構成を解除します。ビットパターンでパラレルポールの無効ビット(ビット4)が設定されているビットは、どのような値でも構成を解除するため、16進の70から7Eまでの間ならどの値でも使うことができます。
    ibppc(dev, 0x70);
    

関連項目:

IBIST

IBPPC

IBRPP

パラレルポーリングの概要

複数デバイスNI-488.2コールを使ったパラレルポーリング

PPoll

PPollConfig

PPollUnconfig