Board-Level Programming

NI-VISA

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.