Serial Poll


Retrieve status byte of destination device by using serial polling function of GPIB.

Use GpibSPoll function to retrieve status byte of specified destination device by using Equipment ID.
Use GpibSPollAll function to retrieve status byte of plural destination devices by using Device ID.

 

Example:

Use Equipment ID

- Single (Performs serial poll to slave device specified by EqpID.)

short Stb, Srq;

 

Ret = GpibSPolll ( EqpId, &Stb, &Srq );                // Retrieve status byte of destination device whose Equipment ID is specified

 

if ( Ret == 0 ) {                                      // Confirms whether it is normal completion

    Printf ( "%ld\n", Stb );                           // Outputs status byte

    Printf ( "%ld\n", Srq );                           // Outputs status for SRQ

}

 

Use Device ID

- Plural (Performs serial poll to slave devices whose addresses are 1 and 2, outputs status byte and address from which SRQ is detected on normal completion.)

short AddrArray[15], StbArray[15], SrqArray[15], i, k;

 

AddrArray[0] = 1;                                       // Sets address to 1

AddrArray[1] = 2;                                       // Sets address to 2

AddrArray[2] = -1;                                      // Specifies [-1] as terminal (It must be input at last of array for slaves.)

Ret = GpibSPollAll ( DevId, AddrArray, StbArray, SrqArray );  // Retrieves status bytes of destination devices whose addresses are specified

 

if ( Ret == 0 ) {                                       // Confirms whether it is normal completion

    i = 0;                                              // Initial variable specifying the index of array element

    k = 0;                                              // Initial variable specifying number of devices from which SRQ are transmitted

    while ( AddrArray[i] != -1 ) {                      // Iterates until specified address is terminal

        if ( SrqArray [i] != 0 ) {                      // Confirms device that outputted SRQ

            Printf ( "%ld\n", AddrArray[i] );           // Outputs address of destination device

            Printf ( "%ld\n", StbArray[i] );            // Outputs status byte

            k++;                                        // Counts up number of devices that outputted SRQ

        }

        i++;                                            // Counts up the index of array element

    }

    if ( k == 0) Printf ( "No SRQ\n" );                 // Displays message when no device outputted SRQ

}

 

 

Practical sample:

Performs serial poll after confirming reception of SRQ.

Use Equipment ID

- Single (Performs serial poll to slave device specified by EqpID.)

short Stb, Srq;

long SRQflag;

 

SRQflag = 0;                                            // Initials flag to confirm SRQ

do {

    Ret = GpibGetStatus ( Id, 0x12, &SRQflag);          // Confirms SRQ specification

    if ( Ret != 0 ) break;                              // Checks return value

    sleep(10);

} while ( SRQflag == 0 );                               // Loops until SRQ is asserted

 

if ( SRQflag == 1 ) {                                   // Confirms whether SRQ is asserted

    Ret = GpibSPoll ( EqpId, &Stb, &Srq );              // Retrieve status byte of destination device whose Equipment ID is specified

 

    if ( Ret == 0 ) {                                   // Confirms whether it is normal completion

        Printf ( "%ld\n", Stb );                        // Outputs status byte

        Printf ( "%ld\n", Srq );                        // Outputs status for SRQ

    }

}