VISA Resources and Attributes

This section introduces VISA resources and VISA attributes.

This version of the IO Libraries Suite supports Windows and Linux. Available utilities, APIs, help files and features vary by operating system. Variations are flagged in help with these icons:  for Windows and for Linux.

VISA Resources

In VISA, a resource is defined as any device (such as a voltmeter) with which VISA can provide communication. VISA defines six resource classes that a complete VISA system can implement. Each resource class includes:

  • Attributes to determine the state of a resource or session, or to set a resource or session to a specified state.
  • Events for communication with applications.
  • Operations (functions) that can be used for the resource class.

Although the Servant Device-Side (SERVANT) resource is defined by the VISA specification, the SERVANT resource is not supported by Keysight VISA. The SERVANT resource is intended for advanced users who need to write code that causes a computer to function as an instrument rather than as a controller.

The table below describes each resource class supported by Keysight VISA.

OS Supported Resource Class Interface Types Resource Class Description

Windows: All interface types listed

Linux: Generic, GPIB, Serial, TCPIP, USB

Instrument Control (INSTR) Resource Generic, GPIB, GPIB-VXI, VXI, PXI, Serial, TCPIP, USB, VXI Device operations (reading, writing, triggering, etc.).
GPIB Bus Interface (INTFC) Resource Generic, GPIB Raw GPIB interface operations (reading, writing, triggering, etc.).
Memory Access (MEMACC) Resource Generic, GPIB-VXI, PXI, VXI Address space of a memory-mapped bus, such as the VXIbus.
Backplane (BACKPLANE) Resource Generic, GPIB-VXI, PXI, VXI (GPIB-VXI BACKPLANE not supported)

Operations and properties of each backplane in a PXI or VXIbus system.

TCPIP Socket (SOCKET) Resource Generic, TCPIP Operations and properties of a raw network socket connection using TCPIP.

VISA Attributes

Attributes are associated with resources or sessions. You can use attributes to determine the state of a resource or session, or to set a resource or session to a specified state.

For example, you can use the viGetAttribute function to read the state of an attribute for a specified session, event context, or find list. There are read only (RO) and read/write (RW) attributes. Use the viSetAttribute function to modify the state of a read/write attribute for a specified session, event context, or find list.

The pointer passed to viGetAttribute must point to the exact type required for that attribute (ViUInt16, ViInt32, etc.). For example, when reading an attribute state that returns a ViUInt16, declare a variable of that type and use it for the returned data. If ViString is returned, allocate an array and pass a pointer to that array for returned data.

Example: Reading a VISA Attribute

This example reads the state of the VI_ATTR_TERMCHAR_EN attribute and, if it is false, changes the state to true.

ViBoolean state, newstate;
newstate=VI_TRUE;
viGetAttribute(vi, VI_ATTR_TERMCHAR_EN, &state);
if (state err !=VI_TRUE) viSetAttribute(vi,
   VI_ATTR_TERMCHAR_EN, newstate);