Parallel Polling with Traditional NI-488.2 Calls

NI-488.2

Parallel Polling with Traditional NI-488.2 Calls

To implement parallel polling using traditional NI-488.2 calls, complete the following steps. Each step contains example code.

  1. Configure the device for parallel polling using the ibppc function, unless the device can configure itself for parallel polling.

    ibppc requires an 8-bit value to designate the data line number, the ist sense, and whether the function configures the device for the parallel poll. The bit pattern is as follows:

    0 1 1 E S D2 D1 D0

    E is 1 to disable parallel polling and 0 to enable parallel polling for that particular device.

    S is 1 if the device is to assert the assigned data line when ist is 1, and 0 if the device is to assert the assigned data line when ist is 0.

    D2 through D0 determine the number of the assigned data line. The physical line number is the binary line number plus one. For example, DIO3 has a binary bit pattern of 010.

    The following example code configures a device for parallel polling using traditional NI-488.2 calls. The device asserts DIO7 if its ist is 0.

    In this example, the ibdev command opens a device that has a primary address of 3, has no secondary address, has a timeout of 3 s, asserts EOI with the last byte of a write operation, and has EOS characters disabled.

    The following call configures the device to respond to the poll on DIO7 and to assert the line in the case when its ist is 0. Pass the binary bit pattern, 0110 0110 or hex 66, to ibppc.

    #include "ni4882.h"
    dev = ibdev(0,3,0,T3s,1,0);
    ibppc(dev, 0x66);
    

    If the GPIB interface configures itself for a parallel poll, you should still use the ibppc function. Pass the board index or a board unit descriptor value as the first argument in ibppc. Also, if the individual status bit (ist) of the interface needs to be changed, use the ibist function.

    In the following example, the GPIB interface is to configure itself to participate in a parallel poll. It asserts DIO5 when ist is 1 if a parallel poll is conducted.

    ibppc(0, 0x6C);
    ibist(0, 1);
    
  2. Conduct the parallel poll using ibrpp and check the response for a certain value. The following example code performs the parallel poll and compares the response to hex 10, which corresponds to DIO5. If that bit is set, the ist of the device is 1.
    char ppr;
    ibrpp(dev, &ppr);
    if (ppr & 0x10)
       printf("ist = 1\n");
    
  3. Unconfigure the device for parallel polling with ibppc. Notice that any value having the parallel poll disable bit set (bit 4) in the bit pattern disables the configuration, so you can use any value between hex 70 and 7E.
    ibppc(dev, 0x70);
    

Related Topics:

IBIST

IBPPC

IBRPP

Parallel Polling overview

Parallel Polling with Multi-Device NI-488.2 Calls

PPoll

PPollConfig

PPollUnconfig