Board-Level Programming
Advanced users occasionally need to control multiple devices simultaneously or need to have multiple controllers connected together in a single system. Power GPIB programmers use interface-level (bus-level) commands to do this. The corresponding VISA resource for this is the GPIB INTFC resource, and the form of the resource string is "GPIB<controller>::INTFC". This allows raw message transfers in which the driver does not perform automatic device addressing, as it does with INSTR. Also, with the INTFC resource, the controller can directly query and manipulate specific lines on the bus such as SRQ or NDAC, and also pass control to other devices that have controller capability.
For users who are familiar with NI-488.2, the following table shows several common, but not all, NI-488.2 board-level function calls and the corresponding VISA operations. As in the previous table, you can see that the APIs are almost identical.
Board-Level Programming Functions and Operations
NI-488.2 Board Function | VISA INTFC Operation |
---|---|
ibfind | viOpen |
ibonl | viClose |
ibwrt | viWrite |
ibrd | viRead |
ibwait | viWaitOnEvent |
ibconfig | viSetAttribute |
ibask, ibwait | viGetAttribute |
ibcmd | viGpibCommand |
ibsre | viGpibControlREN |
ibgts, ibcac | viGpibControlATN |
ibsic | viGpibSendIFC |
For users who need to write an application that will run inside a device, such as firmware, the INTFC resource provides the necessary functionality. The device status byte attribute is useful for reflecting application status.