Chapter 8 NI-488.2 Programming Techniques
NI-488.2 User Manual 8-16 ni.com
FindRQS serial polls a list of devices until it finds a device that is
requesting service or until it has polled all of the devices on the list.
The call returns the index and status byte value of the device requesting
service.
TestSRQ determines whether the SRQ line is asserted and returns to
the program immediately.
WaitSRQ is similar to TestSRQ, except that WaitSRQ suspends the
application until either SRQ is asserted or the timeout period is
exceeded.
The following examples use these calls to detect SRQ and then determine
which device requested service. In these examples, three devices are
present on the GPIB at addresses 3, 4, and 5, and the GPIB interface is
designated as bus index 0. The first example uses FindRQS to determine
which device is requesting service, and the second example uses AllSpoll
to serial poll all three devices. Both examples use WaitSRQ to wait for the
GPIB SRQ line to be asserted.
Example 1: Using FindRQS
This example shows you how to use FindRQS to find the first device that
is requesting service:
void GetASerialPollResponse ( char *DevicePad,
char *DeviceResponse )
{
char SerialPollResponse = 0;
int WaitResult;
Addr4882_t Addrlist[4] = {3,4,5,NOADDR};
WaitSRQ (0, &WaitResult);
if (WaitResult) {
printf ("SRQ is asserted.\n");
FindRQS ( 0, AddrList, &SerialPollResponse );
if (!(ibsta & ERR)) {
printf ("Device at pad %x returned byte
%x.\n", AddrList[ibcnt],(int)
SerialPollResponse);
*DevicePad = AddrList[ibcnt];
*DeviceResponse = SerialPollResponse;
}
}
return;
}