Example 1: using findrqs, Example 1: using findrqs -16 – National Instruments NI-488.2 User Manual

Page 91

Advertising
background image

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;

}

Advertising