-
LabVIEW VISA Tutorial
Introduction
This tutorial gives an overview of LabVIEWs implementation of
the VISA language. Italso teaches the basic concepts involved in
programming instruments with VISA andgives examples demonstrating
simple VISA concepts.
Covered Material
A. VISA Overview1. VISA Structure2. Supported Platforms and
Environments
B. VISA Programming 1. Default Resource Manager, Sessions,
Instrument Descriptors. 2. Message-Based Communication 3.
Register-Based Communication 4. VISA Attributes
VISA OverviewVISA Structure
VISA is a standard I/O language for instrumentation programming.
VISA by itself doesnot provide instrumentation programming
capability. VISA is a high-level API that callsinto lower level
drivers. The hierarchy of NI-VISA is shown in the figure below.
VISA is capable of controlling VXI, GPIB, or Serial instruments
and makes theappropriate driver calls depending on the type of
instrument being used. Whendebugging VISA problems it is important
to keep in mind that this hierarchy exists. Anapparent VISA problem
could in reality be the results of a bug or installation
problemwith one of the drivers into which VISA is calling.
-
VISA Advantages
One of VISAs advantages is that it uses many of the same
operations to communicatewith instruments regardless of the
interface type. For example, the VISA command towrite an ASCII
string to a message-based instrument is the same whether the
instrumentis Serial, GPIB, or VXI. Thus, VISA provides interface
independence. This can make iteasy to switch interfaces and also
gives users who must program instruments for differentinterfaces a
single language they can learn.
VISA is also designed so that programs written using VISA
function calls are easilyportable from one platform to another. To
ensure this, VISA strictly defines its own datatypes such that
issues like the size, of an integer variable from one platform to
anothershould not affect a VISA program. The VISA function calls
and their associatedparameters are uniform across all platforms;
software can be ported to other platformsand then recompiled. In
other words, a C program using VISA can be ported to otherplatforms
supporting C. A LabVIEW program can be ported to other
platformssupporting LabVIEW. At first, the abundance of new VISA
data types might seem like aburden, but LabVIEW makes them
virtually transparent when using VISA.
Another advantage of VISA is that it is an object-oriented
language which will easilyadapt to new instrumentation interfaces
as they are developed in the future. The interfaceindependence that
is built into the language will also make it even easier for
programmersto move to new interfaces with VISA in the future.
VISAs greatest advantage, perhaps, is that it is an easy
language to learn and use. Itsobject-oriented structure makes the
language and its operations intuitive to learn. This isdue in part
to the fact that VISA provides interface independence by using the
sameoperations for different interfaces and also by the fact VISA
presents a very simple andeasy-to-use API. VISA provides the most
frequently used functionality forinstrumentation programming in a
very compact command set.
Supported Platforms And Environments
The platforms and environments that are supported by NI-VISA are
shown in the tablebelow.
-
Platform Environments VeMacintosh LabVIEW, C1Windows 3.1 MSVC,
Borland C++, CVI, LabVIEW, VB1Windows 95/NT C, CVI, LabVIEW,
VB1Solaris 1 CVI, LabVIEW1Solaris 2 CVI, LabVIEW1Hp-Ux CC, CVI,
LabVIEW1
Because VISA is the language used in writing instrument drivers,
most instrument driverscurrently written by National Instruments
supports all of these environments.
VISA Programming
Before getting started with an introduction to VISA programming
some terminologyneeds to be mentioned. These terms will become
clearer as VISAs functionality isdescribed.
VISA is an object-oriented language. The most important objects
in the VISA languageare known as resources. In object-oriented
terminology, the functions that can be usedwith an object are known
as operations. In addition to the operations that can be usedwith
an object, the object has variables associated with it that contain
information relatedto the object. In VISA, these variables are
known as attributes.
A simplified outline of the internal structure of the VISA
language is shown in thediagram below.
-
There is a default resource manager at the top of the VISA
hierarchy that can search foravailable resources or open sessions
to them. Resources can be GPIB, serial, message-based VXI, or
register-based VXI. The most common operations for message
basedinstruments are reads and writes. The most common operations
for register basedinstruments are Ins and Outs. In addition,
resources have a variety of propertiesassociated with them known as
attributes. These can be read or modified with AttributeNodes.
The remaining sections of this lesson will look at these parts
of the VISA language indetail and present simple programming
examples and exercises performing commonprogramming tasks with the
VISA language. The last part of the internal VISA structureshown in
the diagram are Events. Events are more advanced topics and are not
discussedin this tutorial.
Default Resource Manager, Session, and Instrument
Descriptors
The Default Resource Manager is at the highest level of VISA
operations.Communication must be established with the Resource
Manager at the beginning of anyVISA program. This immediately
brings up two terms that need to be defined: resourceand
session.
Resource - An instrument or controller.
Session - A connection, or link, to the VISA Default Resource
Manager or a resource.
The reason the VISA Default Resource Manager is so important is
because one of itsoperations is to open sessions to other
resources. Sessions must be opened to theinstruments the
application will communicate with. Therefore communication with
theDefault Resource Manager must be established first within an
application.
-
The VISA Default Resource Manager also has another operation
that it can carry out.That operation is to search for available
resources in the system. Sessions can then beopened to any of these
resources.
NOTE: In LabVIEW, a session to the VISA Default Resource Manager
is openedautomatically the first time either of the Default
Resource Manager operations are usedin the program. Therefore, the
first step in a LabVIEW VISA application is to opensessions to
resources or to search for available resources.
The VISA Find Resources VI that carries out the operation of
searching for availableresources in the system is shown below. This
VI is a common starting point for a VISAprogram. It can be used to
determine if all of the necessary resources for the applicationto
run are available.
The only necessary input to the VISA Find Resources VI is a
string called the searchexpression. This determines what types of
resources the Find Resources VI will return.Possible strings for
the search expression are shown in the table below and can be
foundin the LabVIEW Online Reference.
The important return values of the VI are the return count
(which simply reports thenumber of resources that were found) and
the find list. The find list is an array of strings.Each string
contains the description of one of the resources that was found.
These stringsare known as instrument descriptors. A simple VI that
will find all of the availableresources in the system is shown in
the figure below.
-
Instrument Descriptor - The exact name and location of a VISA
resource. This stringhas the format
Interface Type[Board Index]::Address::VISA Class
The instrument descriptors are simply specific instruments found
by the search query.The board index only needs to be used if more
than one interface type is present in thesystem. For example, if
the system contains two GPIB plug-in boards one could bereferred to
as GPIB0 and one as GPIB1. In this case, the board index needs to
be used ininstrument descriptors. For VXI instruments, the Address
parameter is the LogicalAddress of the instrument. For GPIB
instruments, it is the GPIB primary address. ForSerial instruments
the address is not used. An example is ASRL1::INSTR as
thedescriptor for the COM 1 serial port on a personal computer.
The VISA Class is a grouping that encapsulates some or all of
the VISA operations.INSTR is the most general class that
encompasses all VISA operations. In the future,other classes may be
added to the VISA specification. Currently the VISA Class does
notneed to be included as part of the instrument descriptor.
Nevertheless, this should bedone to ensure future compatibility.
Currently, most applications simply use the INSTRclass.
LabVIEW supplies another way to set the class for a VISA session
that can be used now.This is done by popping up on the front panel
VISA Session control and selecting theVISA Class as shown in the
figure below.
-
If a class other than the default Instr class is selected, only
VIs for operations associatedwith that device class can be wired
successfully with this session. For example, if GPIBInstr is
selected for the VISA class, VIs for VXI register accesses can not
be wired withthe session.
The instrument descriptors are used to open sessions to the
resources in the system usingthe Default Resource Managers ability
to open sessions. The VISA Open VI that carriesout this operation
is shown below.
The resource name input is the VISA instrument descriptor for
the resource to which asession will be opened.
-
Note: The Find Resources VI does not need to be used to obtain
instrument descriptorsfor resources. The VISA Open VI can be used
with an instrument descriptor provided bythe user or programmer.
However, to be sure of the syntax for the descriptor, it is bestto
run Find Resources first.
Note: In most applications, sessions only need to opened once
for each instrument thatthe application will communicate with. This
session can be routed throughout theapplication and then closed at
the end of the application.
Notice that there is also a VISA session input to the VISA Open
VI. In order to opensessions to resources in LabVEIW, a VISA
Session front panel control is needed. TheVISA session front panel
control can be found in the Controls Palette in the Path
&Refnum sub-palette.
At this point it is important to have a clear understanding of
the Default ResourceManager, instrument descriptors, and sessions.
A good analogy can be made between theVISA Default Resource Manager
and a telephone operator. Opening a session to theDefault Resource
Manager (remember this is done automatically in LabVIEW) is
likepicking up the phone and calling the operator to establish a
line of communicationbetween a program and the VISA driver.
In turn, the telephone operator has the ability to dial phone
numbers to establish lines ofcommunication with resources in the
system. The phone numbers that the ResourceManager uses are the
instrument descriptors. The lines of communication are thesessions
that are opened to VISA resources. In addition, the Resource
Manager can lookfor all the available phone numbers. This is the
VISA Find Resources operation.
An open session to a VISA resource also uses system resources
within the computer. Toproperly end a VISA program all of the
sessions opened to VISA resources should beclosed. To do this,
there is a VISA Close VI that is shown below.
-
The important input to the VISA Close VI is the session to be
closed. This sessionoriginally comes from the output session
terminal of the VISA Open VI.
If a session is not closed when a VI is run that session will
remain open. It is a good ideato always close any sessions that are
opened in an application so open sessions dontbuild up and cause
problems with system resources. However, there are cases
whenleaving sessions open can be useful.
If a VI runs and leaves a session open without closing it - this
session can still be used inlater VIs. An already open session can
be accessed by popping up on a VISA Sessionfront panel control and
going to the Open Sessions selection. The output of the VISASession
front panel control will then be the already open session that is
selected. In thisway sessions can be closed that were left open
from earlier runs of a VI. This method canalso be used to
interactively test parts of an application. An example of selecting
analready open session is shown in the figure below.
The open sessions choice of the front panel VISA Session control
can be used to check ifany sessions are currently open. Accessing
open sessions by popping up on front panelVISA Session Controls
also provides a convenient way to interactively run parts of
aninstrument driver.
-
Error Handling with VISA
Error handling with VISA VIs is similar to error handling with
other I/O VIs inLabVIEW. Each of the VISA VIs contain Error Input
and Error Output terminals that areused to pass error clusters from
one VI to another in a diagram. The error cluster containsa Boolean
flag indicating whether an error has occurred, a numeric VISA error
code, anda string containing the location of the VI where the error
occurred. If an error occurs,subsequent VIs will not try to execute
and will simply pass on the error cluster. A frontpanel error
cluster indicator showing the output from the error out terminal of
a VISAfunction is shown in the figure below.
Notice that in this case an error has occurred because the
Boolean value in the errorcluster is turned on. Also notice that
the VISA error code for the error that has occurredis cut off in
the code indicator. VISA error codes are 32-bit integers that are
usuallyreferred to in hexadecimal format. The LabVIEW error cluster
displays the code indecimal. There is a VISA Error Codes section in
the LabVIEW Online Help that alsolists all of the error codes in
decimal. However, as the figure above shows, these errorcodes are
cut off in the error cluster. The code indicator must be resized to
display theentire error code.
The LabVIEW Simple and General Error Handler VIs can be found in
the Time &Dialog sub-palette under the functions palette. These
VIs provide a pop-up dialoguebox if an error occurs and also look
up the error code to determine possible reasons forthe error. The
result of running the same code that produced the error shown in
the errorcluster above using the Simple Error Handler VI instead is
shown in the figure below.
-
Notice that the code description is listed under the possible
reasons. It is not alwaysconvenient to handle errors with pop-up
dialogue boxes through the LabVIEW errorhandling VIs. VISA also
provides an operation that will take a VISA error code andproduce
the error message string corresponding to the code as an output.
This VI isshown in the figure below.
The inputs to this VI are a VISA session and a VISA error
cluster. The VI will check theVISA code in the error cluster that
was passed to it and output the text description of thecode from
the status description terminal. Even if the input error cluster
did have theerror value set, a status string description indicating
success or a warning will beproduced. This VI allows a text
description of the status after a VISA VI executes to beobtained
and used in a program. The figure below shows a Labview string
indicatordisplaying the error string returned from the VISA Status
Description VI.
The exact method used for implementing error handling will
depend on the nature of theprogram. However, some sort of error
handling mechanism should be implemented inany program involving
VISA.
VISAIC And Message-Based CombinationVISAICVisa comes with a
utility called VISA Interactive Control (VISAIC) on all platforms
thatsupport VISA and LabVIEW (except the Macintosh). This utility
provides access to allof VISAs functionality interactively, in an
easy-to-use graphical environment. It is aconvenient starting point
for program development and learning about VISA. However,when VISA
is installed through LabVIEWs default installation, VISAIC is not
installed.VISA can be reinstalled by itself to install this useful
utility. The latest versions of VISAare available for no charge on
National Instruments ftp site ftp.natinst.com under thesupport/visa
directory.
-
When VISAIC runs, it automatically finds all of the available
resources in the system andlists the instrument descriptors for
each of these resources under the appropriate resourcetype. The
VISAIC opening window is shown in the figure below.
The Soft Front Panels tab of the main VISAIC panel will give you
the option to launchthe soft front panels of any VXI plug and play
instrument drivers that have been installedon the system.
The NI I/O tab will give you the option to launch the NI-VXI
interactive utility or the NI-488 interactive utility. This gives
you convenient links into the interactive utilities for thedrivers
VISA calls in case you would like to try debugging at this
level.
Double-clicking on any of the instrument descriptors shown in
the VISAIC window willopen a session to that instrument. Opening a
session to the instrument produces awindow with a series of tabs
for interactively running VISA commands. The exactappearance of
these tabs depends on which compatibility mode VISAIC is in. To
accessthe compatibility mode and other VISAIC preferences select
Edit >> Preferences . . . tobring up the window shown
below.
-
The VISA implementations are slightly different in LabVIEW and
LabWindows/CVI --these differences are reflected in the operation
tabs that are shown when you open asession to a resource. By
default, the compatibility mode is set to Labwindows/CVI.This
should be changed to LabVIEW if program development is being done
with theLabVIEW package. Once the preferences are changed, the new
preferences will takeeffect for any session that is opened
later.
When a session to a resource is opened interactively, a window
similar to the one shownbelow will appear.
-
There are three main tabs that appear in the window. The initial
tab is the template tabthat contains all of the operations dealing
with events, attributes, and locks. Notice thatthere is a different
tab for each of these operations under the main tab. The other
maintabs are the INSTR Basic I/O and INSTR Register I/O. The Basic
I/O tab contains thebasic operations for message-based instruments
while the Register I/O tab contains thebasic operations for
register-based instruments. The Register I/O tab only appears
forVXI instruments.
There will be more discussion of the VISA operations in the
upcoming sections. Fornow, it is important to remember that VISAIC
performs a VISA Find Resources when itis run and displays
instrument descriptors for all of the resources in the system. For
VXIinstruments, VISAIC also attempts to access one of the
configuration registers on eachinstrument to verify its existence.
In upcoming lessons VISAIC will be used as a learningand
development tool. It is often easier to develop an application
interactively beforedoing the actual programming. VISAIC can also
serve as a very useful debugging toolwhen problems arise in writing
a program or in using a pre-existent application usingVISA VIs.
Message-Based Communication
Serial, GPIB, and many VXI devices recognize a variety of
message-based commandstrings. At the VISA level, the actual
protocol used to send a command string to aninstrument is
transparent. A user only needs to know that they would like to
write a
-
message or read a message from a message-based device. The VIs
that are used toperform these operations are VISA Write and VISA
Read.
Note: these same VIs are used to write message based commands to
GPIB, Serial, andmessage-based VXI instrument. VISA knows
automatically which functions to call basedon the type of resource
being used.
The Write VI is shown below.
The only input, besides the instrument session, is the string to
be sent to the instrument.
The VISA Read VI is equally easy to use. It is shown below.
The VISA Read VI must be given a byte count input equal to the
maximum number ofbytes that should be read from the instrument. The
VI will terminate the read when thisnumber of bytes has been read
or when the end of the transfer is indicated.
The actual message-based commands that the instrument recognizes
vary frommanufacturer to manufacturer. The GPIB IEEE 488.2 protocol
and SCPI standards madesome attempts at standardizing the commands
for message-based instruments. Manyinstruments follow these
standards. However, the only way to be certain of thecommands that
should be used with a particular instrument is to refer to
thedocumentation provided by the manufacturer. However, pre-written
instrument driversexist for many message-based devices. These
instrument drivers contain functions thatput together the
appropriate ASCII command strings and send them to the
instrument.
A simple example that writes the *IDN? string to a message-based
instrument and readsthe response is shown in the figure below.
-
This program could be used successfully with any device that
recognizes the *IDN?command. The device could be Serial, GPIB, or
VXI. The only change would be theinstrument descriptor.
Register-Based Communication
VISA contains a set of register access VIs for use with VXI
instruments. Some VXIinstruments do not support message-based
commands. The only way to communicatewith these instruments is
through register accesses. All VXI instruments haveconfiguration
registers in the upper 16 kilobytes of A16 memory space.
Therefore,register access functions can also be used to read from
and write to the configurationregisters for message-based devices.
The basic VISA operation used to read a value froma register is
VISA In. There are actually three different versions of this
operation forreading a 8, 16, or 32 bit value. The VISA In 16 VI is
shown in the figure below.
This VI and other basic register access VIs can be found in the
High Level RegisterAccess sub-palette under the main VISA function
palette.
-
The address space input simply indicates which VXI address space
is to be used. Theoffset input sometimes causes confusion. Remember
that VISA keeps track of the basememory address that a device
requests in each address space. The offset input is relativeto this
base address.
Consider the following example. Suppose that you have a device
at logical address 1 andwould like to use the VISA In 16 VI to read
its ID/Logical Address configuration register.You know that this
register is at absolute address 0xC040 in A16 space and that
theconfiguration registers for the device at logical address 1
range from 0xC040 to 0xC080.However, VISA also knows this and you
only need to specify the offset in the region youwish to access. In
this case, that offset is zero.
There is another set of high level register access operations
that parallel the VISA Inoperations, but are for writing to
registers. These operations are the VISA Outoperations. The VISA
Out 16 VI is shown below.
This VI is similar to the VISA In 16 VI except the value to
write must be provided to thevalue terminal. Keep in mind when
using the VISA Out VIs that some registers can notbe accessed.
An example of using the high level VISA access functions in a VI
is shown in the simpleprogram below.
-
The program asks the user for the instrument descriptor and the
offset of theconfiguration register to be read and returns the
value from the register. If an error occursin the sequence of VISA
VIs that execute in the program, the Simple Error Handler willpop
up a dialogue box informing the user of the error and the text
message associatedwith the VISA Error Code.
VISA Attributes
The basic operations that are associated with message and
register-based resources inVISA have now been introduced. These
operations allow register access, and message-
-
based communication. In addition to the basic communication
operations, VISAresources have a variety of attributes whose values
can be read or set in a program.
In a LabVIEW program, these attributes are handled
programmatically in the same waythat the properties of front panel
controls and indicators are handled. Attribute nodes areused to
read or set the values of VISA attributes. A VISA attribute node is
shown in thefigure below.
The VISA attribute node contains a single attribute terminal
when it is placed initially onthe block diagram. However, it can be
resized to contain as many different terminals asnecessary. The
initial terminal on the VISA attribute node is a read terminal.
This meansthat the value of the attribute selected in that terminal
will be read. This is indicated bythe small arrow pointing to the
right at the right edge of the terminal. Terminals canindividually
be changed from a read terminal to a write terminal by popping-up
on theattribute you wish to change.
Note: Popping up on the terminals sometimes will not give you
the option of changingthe terminal to a read or to a write. This is
due to the fact that some attributes are readonly. Their value can
not be set.
To select the attribute in each terminal of the attribute node,
pop up on the attribute nodeterminal and choose Select Item. This
will provide a list of all the possible attributesthat can be set
in the program. This will produce a long list of attributes. The
number ofdifferent attributes that are shown under the Select Item
choice of the VISA AttributeNode can be limited. To do this, the
VISA Class of the attribute node can be changed.
To change the VISA class pop up on the VISA attribute node and
go to the VISA Classselection. Several different classes can be
selected under this option besides the defaultINSTR class which
encompasses all the VISA attributes. These classes simply limit
theattributes displayed to those related to that class instead of
all the VISA attributes. Oncea session is connected to the Session
input terminal of the attribute, the VISA Class willbe set to the
class associated with that session.
Initially, the VISA attributes will be somewhat unfamiliar and
their exact nature may notbe clear from the name alone. The VISA
online reference contains more detailed
-
descriptions of the various attributes and their values. The
LabVIEW online referencealso contains information on the
attributes. Brief descriptions of individual attributes arealso
available in the simple help window. To get a brief description of
a specificattribute, select the attribute in one of the terminals
of an attribute node and then open thesimple help window. This is
shown for the VXI LA attribute below.
Note that the help window shows the specific variable type of
the attribute and gives abrief description of what the attribute
does. In cases where it is not clear what variabletype to use for
reading or writing an attribute, remember popping up on an
attribute nodeand selecting Create Constant, Create Control, or
Create Indicator will automaticallyselect the appropriate variable
type.
There are two basic types of VISA attributes - Global Attributes
and Local Attributes.Global attributes are specific to a resource
while Local Attributes are specific to a session.For example, the
VXI LA attribute that is shown in the figure above is an example of
aglobal attribute. It applies to all of the sessions that are open
to that resource. A localattribute is an attribute that could be
different for individual sessions to a specificresource. An example
of a local attribute is the time out value. Some of the
commonattributes for each resource type are shown in the list
below.
Serial
Serial Baud Rate The baud rate for the serial port.
Serial Data Bits The number data bits used for serial
transmissions.
Serial Parity The parity used for serial transmissions.
Serial Stop Bits The number of stop bits used for serial
transmissions.
GPIB
-
Gpib Readdressing Specifies if the device should be readressed
before every writeoperation.
Gpib Unaddressing Specifies if the device should be unaddressed
after read and writeoperations.
VXI
Mainframe Logical Address - The lowest logical address of a
device in the same chassiswith the resource.
Manufacturer Identification - The manufacturer ID number from
the devicesconfiguration registers.
Model Code - The model code of the device from the devices
configuration registers.
Slot - The slot in the chassis that the resource resides in.
VXI Logical Address - The logical address of the device.
VXI Memory Address Space - The VXI address space used by the
resource.
VXI Memory Address Base - The base address of the memory region
used by theresource.
VXI Memory Address Size - The size of memory region used by the
resource.
There are many other attributes besides those given in this
list. There are also attributesthat are not specific to a certain
interface type. The timeout attribute which is the timeoutused in
message-based I/O operations is a good example of such an
attribute. The mostcomplete source for information about attributes
is the VISA online reference (foundunder the VXI PNP program
group). This information is found under the Attributes topicin the
online reference. The entry for the VXI Logical Address attribute
in the VISAOnline Reference is shown in the figure below.
-
The VISA online help shows which type of interfaces the
attribute applies to, if theattribute is local or global, its data
type, and what the valid range of values are for theattribute. It
also shows related items and gives a detailed description of the
attribute.However, like the VISAIC utility, the VISA online help is
not installed by the defaultLabVIEW installation. To obtain it,
VISA must be reinstalled.
VISA Attribute Examples
This section contains three simple examples of using attributes
in VISA programs. Thefirst, shown in the figure below, writes a
string to a serial instrument and reads theresponse.
-
The VI opens a session to the serial port COM 1 and initializes
it for 19200 baud, 8 databits, no parity, and 1 stop bit. A string
is then written out the port. After writing thestring and waiting
for 10 seconds, the number of bytes that have been returned by
thedevice are obtained using another VISA attribute. These bytes
are then read from theport. Notice that in this example the value
used to set the number of stop bits to one isactually the value
10.
The next example shows how to use attributes to set a
termination character for VISAread operations. Some message-based
devices send a special character terminationcharacter when they
have no more data to send.
This VI opens a session to a GPIB instrument at primary address
two. The VI sets thetermination character to a linefeed (decimal
value 10) and then enables the use of atermination character with
another attribute. The VI also sets the timeout attribute to10000
milliseconds (10 seconds). It then writes the string *IDN? to the
instrument andtries to read back a 100 character response. The read
will terminate when the termination
-
character is received. If the termination character is not
received, it will terminate after100 bytes are received or timeout
after 10 seconds.
The final example shows how to read some of the common
attributes associated with aVXI instrument.
This VI opens a session to a VXI instrument at logical address 2
and reads theManufacturer Id, Model Code, and Slot for the VXI
module.
Debugging A VISA ProblemThis section contains information on
debugging problems with VISA programs. Becauseof VISAs nature,
there are more possibilities to consider when debugging
VISAproblems than when working with standalone drivers. VISA makes
calls into NI-VXI,NI-488, or Operating System serial APIs.
Therefore, problems that appear in VISA couldbe related to the
driver VISA is calling, and not VISA itself.
If no VISA VIs appear to be working in LabVIEW (including
instrument drivers), one ofthe first things debugging steps is to
try is the basic VISA Find Resources VI. This VIwill run without
any other VISA VIs in the block diagram. If this VI produces
strangeerrors such as error codes that are not standard VISA
errors, the problem is most likelythat the wrong version of VISA is
installed or that VISA is not installed correctly. IfVISA Find
Resources runs correctly, there is not a problem with LabVIEW
interfacingwith the VISA driver. The next step is to narrow down
what sequence of VIs areproducing the error in the LabVIEW
program.
If it is a simple sequence of events that is producing the
error, a good next step indebugging is to try the same sequence
interactively with the VISAIC utility. It is
-
generally a good idea to do initial program development
interactively. If the interactiveutility works successfully but the
same sequence in LabVIEW does not, it is an indicationthat LabVIEWs
implementation of VISA may have a problem. If the same
sequenceexhibits the same problem interactively in VISAIC it is
possible that a problem existswith one of the drivers VISA is
calling. The interactive utilities for these drivers (VIC forNI-VXI
and IBIC for NI-488.2) can be used to try to perform the equivalent
operations.If the problems persist on this level it is an
indication that there may be a problem withthe lower level driver
or its installation. This is only a very rough outline of debugging
aVISA problem. The main point to remember when debugging is that
VISA programsinvolve several layers.