Home
Agilent VISA User`s Guide
Contents
1. viWaitOnEvent Memory Access MEMACC Resource Events Event Name Attributes Data Type Range VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB_ID ViJobid N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A GPIB Bus Interface INTFC Resource Events Event Name Attributes Data Type Range VI_EVENT_GPIB CIC VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_GPIB_CIC VI_ATTR_GPIB_RECV_CIC_ ViBoolean VI_TRUE STATE VI_FALSE VI_EVENT_GPIB TALK VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_GPIB_TALK VI_EVENT_GPIB_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_GPIB_ LISTEN LISTEN VI_EVENT_CLEAR VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_CLEAR VI_EVENT_TRIGGER VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIGGER VI_ATTR_RECV_TRIG_ID VilInt16 VI_TRIG SW VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A Chapter 7 313 VISA Language Reference viWaitOnEvent VXI Mainframe Backplane BACKPLANE Resource Events Event Name Attributes Data Type Range VI_EVENT_TRIG VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIG V
2. Interface GPIB GPIB VXI TCPIP ASRL VXI Resource Class Find Rsrc INSTR INTFC INSTR INSTR MEM BACK INSTR SOC INSTR List Mgr ACC PLANE KET viGpibCommand e viGpibControlATN viGpibControlREN e viGpibPassControl 3 viGpibSendIFC viIn8 e e vilIn16 e e e viiIn32 e e e viInstallHandler e e e e viLock e e e e e viMapAddress e viMapTrigger e viMemAlloc viMemFree viMove e e e viMoveAsync s k viMoveIn8 e viMoveIn1l6 e e viMoveIn32 e e viMoveOut8 e e a implemented synchronously 150 Chapter 7 VISA Language Reference VISA Functions Overview viMoveOut16 viMoveOut32 viOpen viOpenDefaultRM viOut8 viOut16 viOut32 viParseRsrc viPeek8 viPeek16 viPeek32 viPoke8 viPokel6 viPoke32 viPrintf viQueryf viRead viReadAsync viReadSTB viReadToFile a implemented synchronously Chapter 7 151 VISA Language Reference VISA Functions Overview Interface GPIB GPIB VXI TCPIP ASRL VXI Resource Class Find Rsrc INSTR INTFC INSTR INSTR MEM BACK INSTR SOC
3. different Byte order Data is sent in standard IEE 488 2 big endian format This is modifier ob the default behavior if neither ob nor o1 is present Byte order Data is sent in little endian format modifier ol Parameters Name Direction Type Description arg1 arg2 IN N A Parameters format string is applied to vi IN vViSession Unique logical identifier to a session writeFmt IN viString String describing the format for arguments Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Parameters were successfully formatted Chapter 7 257 VISA Language Reference viPrintf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION The given session or object reference is invalid both VI_ERROR_INV_OBJECT are the same value VI_ERROR_IO Could not perform write function because of I O error VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access VI_ERROR_TMO Timeout expired before write function complet
4. Name_ Direction Type Description offset IN ViBusAddress Offset in bytes of the address or register to write to space IN viUInt16 Specifies the address space See the following table val8 IN viUInt8 Data to write to bus 8 bits for viOut8 val16 ViUInt16 or 16 bits for viOut16 and 32 bits for or val32 ViUInt32 vi0ut32 vi IN viSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state 244 Chapter 7 See Also VISA Language Reference viOut8 viOut16 and viOut32 Error Codes Description VI_ERROR_INV_SPACE Invalid address space specified VI_ERROR_NSUP_ALIGN_ OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset not accessible from this hardware VI_ERROR_NSUP_OPER The given vi doe
5. 140 Chapter 6 Example Opening a Device Session Programming via LAN Communicating with GPIB Devices via LAN Communicating with GPIB Devices via LAN VISA supports LAN gatewayed sessions to communicate with configured LAN servers Since the LAN server configuration is determined by the type of server present the only action required by the user is to configure VISA for a VISA LAN Client during Agilent IO Libraries configuration See the Agilent IO Libraries Installation and Configuration Guide for Windows for information on configuring a VISA LAN Client NOTE A LAN session to a remote interface provides the same VISA function support as if the interface was local except that all VXI specific functions are not supported over LAN Addressing a Session In general the rules to address a LAN session are the same as to address a GPIB session The only difference for a LAN session is that you use the VISA Interface Name provided during I O configuration that relates to the VISA LAN Client This example illustrates addressing a GPIB device configured over the LAN GPIBO 7 0 A GPIB device at primary address 7 and secondary address 0 on the GPIB interface This GPIB interface GPIBO is configured as a VISA LAN Client in the Agilent IO Libraries configuration This example shows one way to open a device session with a GPIB device at primary address 23 See Chapter 4 Programming with VISA for more i
6. GPIB VXI E1406A Interfaces Windows PC GPIB VXI Mainframe vV V V X X E l l 1 a l l n n n GPIB Card 6 a A t t t r r r 100 Chapter 5 Programming via GPIB and VXI GPIB and VXI Interfaces Overview Example GPIB VXI The GPIB VXI interface system in the following figure consists of a Windows E1406A Interface PC with an 82350 GPIB card that connects to an E1406A Command Module in a VXI Mainframe The VXI mainframe includes one or more VXI instruments When the IO Libraries were installed a GPIB VXI driver with GPIB address 9 was also installed and the E1406A was configured for primary address 9 and logical address LA 0 The three VXI instruments shown have logical addresses 8 16 and 24 The IO Config utility has been used to assign the GPIB VXI driver a VISA Name of GPIB VXI0 and to assign the 82350 GPIB card a VISA name of GPIBO VISA addressing is as shown in the figure For information on the E1406A Command Module see the Agilent E1406A Command Module User s Guide For information on VXI instruments see the applicable VXI instrument User s Guide K a GPIB VXI Interface E1406A Command Module Interface VISA Name Windows PC VXI Mainframe VISA Name Vv V V E ART x x x GPIB VXI0 GPIB VXI Driver a GPIB Address 9 Primary eS Address9 1 i i TEIE n 6 s s s GPIBO 82350 GPIB Card A t t t GPIB f r r
7. char nameBuffer 256 ViString functionName nameBuffer char errStrBuffer 256 Get the error value from the exception context viGetAttribute context VI_ATTR_ STATUS amp exceptionErrNbr Get the function name from the exception context viGetAttribute context VI_ATTR_OPER NAME functionName Chapter 4 85 Programming with VISA Trapping Errors errStrBuffer 0 0 viStatusDesc vi exceptionErrNbr errStrBuffer printf ERROR Exception Handler reports n s n VISA function s failed with error 0x l1x n functionName exceptionErrNbr return VI SUCCESS void main errStrBuffer ViStatus ViSession ViSession stat drm vi US ViAddr status AE status lt VI SUCCESS myUserHandle 0 tRM amp drm viOpenDefaul printf ERROR viOpenDefaultRM failed with error Ox lx n status return Install the exception handler and enable events for it 27 status vilInstallHandler drm VI_EVENT EXCEPTION myExceptionHandler myUserHandle if status lt VI SUCCESS printf ERROR vilInstallHandler failed with error Ox lx n status status viEnableEvent drm VI_EVENT EXCEPTION VI_HNDLR Vir NULLS if status lt VI_SUCCESS printf ERROR viEnableEvent failed with error Ox lx n status
8. 40 Chapter 4 Programming with VISA Using Sessions Using Sessions This section shows how to use VISA sessions including Including the VISA Declarations File C C Adding the visa32 bas File Visual Basic Opening a Session to a Resource Addressing a Session Closing a Session Searching for Resources Including the VISA Declarations File C C For C and C programs you must include the visa h header file at the beginning of every file that contains VISA function calls finclude visa h This header file contains the VISA function prototypes and the definitions for all VISA constants and error codes The visa h header file also includes the visatype h header file The visatype h header file defines most of the VISA types The VISA types are used throughout VISA to specify data types used in the functions For example the viOpenDefau1tRM function requires a pointer to a parameter of type ViSession If you find ViSession in the visatype h header file you will find that viSession is eventually typed as an unsigned long VISA types are also listed in Appendix A VISA System Information Adding the visa32 bas File Visual Basic You must add the visa32 bas Basic Module file to your Visual Basic Project The visa32 bas file contains the VISA function prototypes and definitions for all VISA constants and error codes Opening a Session A session is a channel of communication Sessions must first be op
9. Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer 266 Chapter 7 VISA Language Reference viReadSTB Error Codes Description VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW_RD_PROT_VIOL VI_ERROR_RAW WR_PROT_VIOL Violation of raw read protocol occurred during transfer Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_SRQ_NOCCURRED Service request has not been received for the session VI_ERROR_TMO
10. Completion Codes Description VI_SUCCESS Event queue flushed successfully VI_SUCCESS QUEUE _EMPTY Operation completed successfully but queue was empty Error Codes Description VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value See Also viEnableEvent viWaitOnEvent vilnstallHandler 178 Chapter 7 Syntax Description VISA Language Reference viEnableEvent viEnableEvent viEnableEvent ViSession vi ViEventType eventType ViUInt16 mechanism ViEventFilter context This function enables notification of an event identified by the eventType parameter for mechanisms specified in the mechanism parameter The specified session can be enabled to queue events by specifying VI_QUEUE NOTE VISA cannot callback to a Visual Basic function Thus you can only use the VI_QUEUE mechanism in viEnableEvent There is no way to install a VISA event handler in Visual Basic Applications can enable the session to invoke a callback function to execute the handler by specifying VI_HNDLR The applications are required to install at least one handler to be enabled for this mode Specifying VI_SUSPEND_HNDLR enables the session to receive callbacks but the invocation of the handler is deferred to a later time Successive calls to this funct
11. Insufficient location information or resource not present in the system viPeeks vi addr val8 viPeek16 vi addr val16 viPeek32 vi addr val32 These functions do not return any completion or error codes viPoke vi addr val8 viPokel6 vi addr val16 viPoke32 vi addr val32 These functions do not return any completion or error codes viPrintf vi writeFmt arg1 arg2 Codes Description VI_SUCCESS Parameters were successfully formatted VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid Appendix A 353 VISA Library Information VISA Error Codes Codes Description VI_ERROR_IO Could not perform write operation because of I O error VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before write operation completed viQueryf vi writeFmt readFmt arg1 arg2 Codes Description VI_SUCCESS VI_ERROR_ALLOC Successfully completed th
12. 64 Chapter 4 Programming with VISA Using Events and Handlers VI_EVENT_IO COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_RET COUNT Actual number of elements RO viUInt32 0 to FFFFFFFFy that were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation viString N A generating the event Memory Access MEMACC Resource Event VI_EVENT_IO COMPLETION Notification that an asynchronous operation has completed Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ event IO COMPLETION VI_ATTR_STATUS Return code of the asynch RO ViStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation VI_ATTR_RET COUNT Actual number of elements that RO viUInt32 0 to FFFFFFFF were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation RO viString N A generating the event Chapter 4 65 Programming with VISA Using Events and Handlers GPIB Bus Interface INTFC Resource Events VI_EVENT_GPIB_ CIC Notification that the GPIB controller has gained or lost CIC controller in
13. Read Data Synchronously and Store Data in File viReadToFile ViSession vi ViConstString fileName ViUInt32 count ViUInt32 retCount Write Data from File Synchronously viWriteFromFile ViSession vi ViConstString fileName ViUInt32 count ViUInt32 retCount Assert Software Hardware Trig viAssertTrigger ViSession vi ViUInt16 protocol Read Status Byte Formatted I O Set Size of Buffer viReadSTB ViSession vi ViUInt16 status viSetBuf ViSession vi ViUInt16 mask ViUInt32 size Unformatted Read to Formatted I O Buffers viBufRead ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Unformatted Write to Formatted I O Buffers viBufWrite ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Flush Read and Write Buffers Convert Format and Send Parameters to a Device viFlush ViSession vi ViUInt16 mask viPrintf ViSession vi ViString writeFmt arg1 arg2 Convert Format and Send Parameters to a Device vivPrintf ViSession vi ViString writeFmt ViVAList params Write Data to a Buffer Convert Format and Send Parameters to a Buffer viSPrintf ViSession vi ViBuf buf ViString writeFmt arg1 arg2 5 viVSPrintf ViSession vi ViBuf buf ViString writeFmt ViVAList params Receive Data from Device Format and Store Data viScanf ViSession vi ViString readFmt arg1 arg2 Receive Data from Device Form
14. Example Enablinga This example illustrates enabling a hardware trigger event Hardware Trigger Event viInstallHandler vi VI_EVENT TRIG my handler amp addr viEnableEvent vi VI_EVENT TRIG VI_HNDLR VI_ NULL The VI_HNDLR mechanism specifies that the handler installed for VI_EVENT_TRIG will be called when a hardware trigger occurs If you specify VI_LALL ENABLE EVENTS in the eventType parameter all events that have p previously been enabled on the specified session will be enabled for the mechanism specified in this function call Use the viDisableEvent function to stop servicing the event specified 72 Chapter 4 Example Trigger Callback Programming with VISA Using Events and Handlers This example program installs an event handler and enables the trigger event When the event occurs the installed event handler is called This program is intended to show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Trapping Errors in this chapter This example program is installed on your system in the SAMPLES subdirectory on Windows environments or in the examples subdirectory on HP UX See Appendix A VISA Library Information for locations of example programs on your operating system evnthdlr c This example program illustrates installing an event handler to
15. Generate an error to demonstrate that the handler will be called status viOpen drm badVisaName NULL NULL amp vi 86 if status lt VI SUCCESS printf ERROR viOpen failed with error 0x 1x n Exception Handler should have been called n before this message was printed n status Chapter 4 Lock Functions viLock viUnlock Functions Programming with VISA Using Locks Using Locks In VISA applications can open multiple sessions to a VISA resource simultaneously Applications can therefore access a VISA resource concurrently through different sessions However in certain cases applications accessing a VISA resource may want to restrict other applications from accessing that resource For example when an application needs to perform successive write operations on a resource the application may require that during the sequence of writes no other operation can be invoked through any other session to that resource For such circumstances VISA defines a locking mechanism that restricts access to resources The VISA locking mechanism enforces arbitration of accesses to VISA resources on a per session basis If a session locks a resource operations invoked on the resource through other sessions either are serviced or are returned with an error depending on the operation and the type of lock used If a VISA resource is not locked by any of its sessions all sessions have full pri
16. Send a bogus command to the message based device to cause an SRQ Note IDN causes the error IDN is the correct syntax viPrintf vi IDN n Wait a while for the SRQ to be generated and for the handler to be called Print something while we wait printf Waiting for an SRQ to be generated for count 0 count lt 10 amp amp srqOccurred 0 count long count2 0 PLINCE C So while count2 lt 100 amp amp srqOccurred 0 YIELD printf Nn Y disable and uninstall the handler viDisableEvent vi VI_EVENT SERVICE REQ VI_HNDLR viUninstallHandler vi VI_EVENT SERVICE REQ mySrqHdlr 76 Chapter 4 Programming with VISA Using Events and Handlers ViAddr 10 Clean up do not leave device in error state viPrintf vi CLS n close the sessions viClose vi viClose defaultRM printf End of program n Using the Queuing Method The queuing method is generally used when an immediate response from your application is not needed To use the queuing method for receiving notification that an event has occurred you must do the following E Enable one or several events with the viEnableEvent function E When ready to query use the viWaitOnEvent function to check for queued events If the specified event has occurred the event information is retrieved and the program
17. VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SETUP Unable to start read operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC vi does not refer to an interface that is currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer VI_ERROR_RAW_RD_ PROT _VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viReadAsync vi buf count jobld Timeout expired before function completed Codes Description VI_SUCCESS Asynchronous read operation successfully queued VI_SUCCESS SYNC Read operation performed synchronously VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given
18. VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value See the handler prototype viEventHandler for its parameter description and viEnableEvent Also see viInstallHandler and viUninstallHandler descriptions for information about installing and uninstalling event handlers See event descriptions for context structure definitions Chapter 7 175 Syntax Description Parameters VISA Language Reference viDiscardEvents viDiscardEvents viDiscardEvents ViSession Vi ViEventType eventType ViUInt16 mechanism This function discards all pending occurrences of the specified event types for the mechanisms specified in a given session The information about all the event occurrences which have not yet been handled is discarded This function is useful to remove event occurrences that an application no longer needs The event occurrences discarded by applications are not available to a session at a later time This operation causes loss of event occurrences The viDiscardEvents operation does not apply to event contexts that have already been delivered to the application Name Direction Type Description eventType IN ViEventType Logical event identifier See the following tables mechanism IN ViUInt16 Specifies the mechanisms for which the events are to be discarded VI_QUEUE is
19. Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_LINE One of the specified lines trigSrc or trigDest is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_LINE One of the specified lines trigSrc or trigDest is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TRIG_UNMAPPED The path from trigSrc to trigDest is not currently mapped viVPrintf vi writeFmt params Codes Description VI_SUCCESS Parameters were successfully formatted VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION VI_ERROR_IO The given session is invalid Could not perform write operation because of I O error VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of
20. VI_SUCCESS MAX CNT The number of bytes read is equal to count VI_SUCCESS TERM CHAR The specified termination character was read Error Codes Description VI_ERROR_ASRL_FRAMING A framing error occurred during transfer VI_ERROR_ASRL_OVERRUN An overrun error occurred during transfer A character was not read from the hardware before the next character arrived VI_ERROR_ASRL_PARITY A parity error occurred during transfer VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start read function because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge 262 Chapter 7 See Also VISA Language Reference viRead Error Codes Description VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer VI_ERROR_RAW_RD_PROT_ VIOL
21. aeesseeecernccereeren 328 VISA Error Codes Alphabetical 0 cccccsecceeeeeeecees 331 VISA Error Codes by FUNGHON siciccsicceccssssinsessrssnsieassvenness 336 VISA Directories Information cccceeeescceeceeeeeeeeeeeeeeeneees 368 Windows Directory StrUCtUre issssssicsssiissiiissinisniisssinenioessiiss 368 Editing the VISA Configuration s es 370 B VISA Resource Classes cccccccceseeeeeeseeeeeeseeeeeeeeeseneeeeaneeeeeseeeeentens 373 Resource Classes OVEMIOW ciciucccciccnsccossscsuassseersemertenrsesetawoaauae 375 Resource Classes vs Interface Types oenen 375 Interface Types vs Resource Classes cceceeeeseeeeeeeeees 376 Resource Class Descriptions cccccceeeeeeteeeeeeeees 376 Instrument Control INSTR RESOUICE ccccceeesieeeseesseneeees 377 INSTR Resource Overview ccccceceeeeeeeeeeeeeeeeeeaeees 377 INSTR Resource Attributes csciicsisccssiue asst crasscesscouatnanrcaven 378 INSTR Resource Attribute Descriptions 0 00 n 384 INSTR RESOurCe Events sctccecriescrenctesenitacsistnicniniwriseuaeaneed 391 INSTR Resource Operations ccccceeeeeeeeeeeeseeeneeeeees 393 Memory Access MEMACC Resource 395 MEMACC Resource Overview cccccceeeeeeeeeeeseeneeees 395 MEMACC Resource Attributes ccccceeeeeeeeeeeeeeee 396 MEMACC Resource Attribute Descriptions 005 398 MEMACC Resource Even
22. Agilent IO Libraries Installation and Configuration Guide for Windows Shows how to install configure and maintain the Agilent IO Libraries on Windows Agilent IO Libraries Installation and Configuration Guide for HP UX Shows how to install configure and maintain the Agilent IO Libraries on HP UX VISA Online Help VISA Example Programs Information is provided in the form of Windows Help Example programs are provided online to help you develop VISA applications VXlIplug amp play System Alliance VISA Library Specification 4 3 Specifications for VISA IEEE Standard Codes Formats Protocols and Common Commands VXlbus Consortium specifications when using VISA over LAN ANSI IEEE Standard 488 2 1992 TCP IP Instrument Protocol Specification VXI 11 Rev 1 0 TCP IP VXIbus Interface Specification VXI 11 1 Rev 1 0 TCP IP IEEE 488 1 Interface Specification VX 11 2 Rev 1 0 TCP IP IEEE 488 2 Instrument Interface Specification VXI 11 3 Rev 1 0 Contacting Agilent E Inthe USA and Canada you can reach Agilent Technologies at these telephone numbers USA 1 800 452 4844 Canada 1 877 894 4414 H Outside the USA and Canada contact your country s Agilent support organization A list of contact information for other countries is available on the Agilent web site http www agilent com find assist 16 Introduction Building a VISA Application in Windows
23. Reading and Writing to Device Registers Example Using viPeek16 Unmapping Memory Space Example Using the VXI Interface Low Level Memory Functions Programming via GPIB and VXI Using Low Level Memory Functions When you have mapped the memory space use the VISA low level memory functions to access the device s registers First determine which device register you need to access Then you need to know the register s offset See the applicable instrument User manual for a description of the registers and register locations You can then use this information and the VISA low level functions to access the device registers An example using viPeek16 follows ViSession defaultRM vi ViUInt1l6 value ViAddr address ViUInt1l6 value vi0OpenDefaultRM amp amp defaultRM viOpen defaultRM VXI 24 INSTR VI_NULL VI_NULL amp V1 viMapAddress vi VI_Al6 SPACE 0x00 0x04 VI FALSE VI_NULL amp address viPeekl6 vi addr amp value Make sure you use the viUnmapAddress function to unmap the memory space when it is no longer needed Unmapping memory space makes the window available for the system to reallocate Low Level Memory Functions Examples Two example programs follow that use the low level memory functions to read the ID and Device Type registers of the device at VXI logical address 24 The contents of the registers are then printed out The first program uses the VXI interface and the s
24. The write buffer is maintained by the viPrintf or viQueryf writeF mt functions The buffer queues characters to send to the device so that they are sent in large blocks thus increasing performance The write buffer automatically flushes when it sends a newline character from the format string It may occasionally be flushed at other non deterministic times such as when the buffer fills When the write buffer flushes it sends its contents to the device If you set the VI_LATTR_WR_BUF_OPER_MODE attribute to VI_FLUSH_ON_ ACCESS the write buffer will also be flushed every time a viPrintf or viQueryf operation completes See VISA Attributes in this chapter for information on setting VISA attributes The read buffer is maintained by the viScanf and viQueryf readF mt functions It queues the data received from a device until it is needed by the format string Flushing the read buffer destroys the data in the buffer and guarantees that the next call to viScanf or viQueryf reads data directly from the device rather than data that was previously queued If you set the VI_ATTR_RD_BUF_OPER_MODE attribute to VI_FLUSH_ON_ACCESS the read buffer will be flushed every time a viScanf or viQueryf operation completes See VISA Attributes in this chapter for information on setting VISA attributes Chapter 4 57 Example Sending and Receiving Formatted I O Programming with VISA Sending I O Commands You can manually flush the read and write b
25. Use VISA if you want to use VXlp ug amp play instrument drivers in your applications or if you want the I O applications or instrument drivers that you develop to be compliant with VXlplug amp play standards If you are using new instruments or are developing new I O applications or instrument drivers we recommend you use Agilent VISA Agilent Standard Instrument Control Library SICL is an I O library developed by Agilent that is portable across many I O interfaces and systems You can use Agilent SICL if you have been using SICL and want to remain compatible with software currently implemented in SICL 14 Introduction VISA Support on Windows VISA Support on HP UX VISA Users Introduction VISA Overview VISA Support Agilent VISA is an I O library that can be used to develop I O applications and instrument drivers that comply with the VXlplug amp play standards Applications and instrument drivers developed with VISA can execute on VXlIplug amp play system frameworks that have the VISA I O layer Therefore software from different vendors can be used together on the same system This 32 bit version of VISA is supported on Windows 95 Windows 98 Windows Me Windows NT and Windows 2000 Support for the 16 bit version of VISA was removed in version H 01 00 of the Agilent IO Libraries C C and Visual Basic are supported on all these Windows versions For Windows VISA is supported on the GPIB VXI GPIB VXI Serial RS
26. VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_GPIB_ TALK VI_EVENT_GPIB_LISTEN Notification that the GPIB controller has been addressed to listen Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_GPIB_ LISTEN VI_EVENT_TRIG Notification that the local controller has been triggered VI_ATTR_RECV_TRIG_ ID mechanism on which the specified trigger event was received Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO vViEventType VI_EVENT_TRIG event The identifier of the triggering RO viInt16 VI_TRIG SW VI_EVENT_VXI_VME_SYSRESET Notification that the VXI VME SYSRESET line has been reset Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_VXI_ VME_SYSRESET VILEVENT_TCPIP_CONNECT Notification that a TCPIP connection has been made Event Attribute Description AP Data Type Range VI_ATTR_EVENT_ TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_TCPIP_ CONNECT 418 Appendix B VISA Resource Classes Servant Device Side SERVANT Re
27. Chapter 7 157 VISA Language Reference viAssertintrSignal viAssertintrSignal Syntax viAssertIntrSignal ViSession vi ViInt16 mode ViUInt32 status D Description Asserts the specified device interrupt or signal This operation can be used to assert a device interrupt condition In VXI for example this can be done with either a VXI signal or a VXI interrupt On certain bus types the status D parameter may be ignored NOTE This function is not implemented in Agilent VISA Parameters Name Direction Type Description mode IN ViInt16 This specifies how to assert the interrupt See the Description section for actual values status D IN ViUInte32 This is the status value to be presented during an interrupt acknowledge cycle vi IN ViSession Unique logical identifier to a session Special Values for mode Parameter mode Action Description VI_ASSERT_IRQ1 Send the interrupt via the specified VXI VME IRQ line VI_ASSERT_IRQ7 This uses the standard VXI VME ROAK release on acknowledge interrupt mechanism rather than the older VME RORA release on register access mechanism VI_ASSERT_SIGNAL Send the notification via a VXI signal VI_ASSERT_USE_ Use whatever notification method that has been ASSIGNED assigned to the local device 158 Chapter 7 Return Values See Also Type ViStatus VISA Language Reference viAssertintrSignal This is the funct
28. Description Parameters VISA Language Reference viDisableEvent viDisableEvent viDisableEvent ViSession vi ViEventType eventType ViUInt16 mechanism This function disables servicing of an event identified by the eventType parameter for the mechanisms specified in the mechanism parameter Specifying VI_ALL ENABLED EVENTS for the eventType parameter allows a session to stop receiving all events The session can stop receiving queued events by specifying VI_QUEUE Applications can stop receiving callback events by specifying either VI_HNDLR or VI_SUSPEND_HNDLR Specifying VI_ALL MECH disables both the queuing and callback mechanisms viDisableEvent prevents new event occurrences from being added to the queue s However event occurrences already existing in the queue s are not discarded Name Direction Type Description eventType IN ViEventType Logical event identifier See the following tables mechanism IN ViUInt16 Specifies event handling mechanisms to be disabled The queuing mechanism is disabled by specifying VI_QUEUE The callback mechanism is disabled by specifying VI_HNDLR or VI_SUSPEND_HNDLR It is possible to disable both mechanisms simultaneously by specifying VI_ALL MECH vi IN ViSession Unique logical identifier to a session Chapter 7 173 Return Values VISA Language Reference viDisableEvent Special Value for eventType Parameter Value Action Descript
29. INSTR List Mgr ACC PLANE KET viScanf e e e e viSetAttribute e e e e e viSetBuf e e e viSPrintf e viSScanf e o viStatusDesc e e e e viTerminate viUninstallHandler e e e e e e viUnlock e e e viUnmapAddress e viUnmapTrigger e viVPrintf e e e e viVQueryf e e e viVScanf e e e e vivSPrintf e e e vivsScanf e viVxiCommandQuery e viWaitOnEvent e e e e e viWrite e e e e viWriteAsync e e e e e viWriteFromFile e e e e e 152 Chapter 7 VISA Language Reference VISA Functions Overview VISA Functions by Type This table show VISA functions implemented by Agilent VISA grouped by type The data types for the VISA function parameters for example ViSession etc are defined in the VISA declarations file see Appendix A VISA Library Information Operation Function Type Parameter1 Type Parameter2 Opening Closing Sessions Open Default RM Session viOpenDefaultRM ViSession sesn Open Session viOpen ViSession sesn ViRsre rsrcName ViAccessMode accessMode ViUInt32 timeout ViSession Vi Close Session viClose ViSession ViEvent ViFindList Vi Control Get Attribute viGetAttribute ViSession ViEvent ViFindList vi ViAttr attribute ViAttrState attrState
30. If the operational mode is set to VI_FLUSH_ON_ACCESS the write buffer is flushed under the same conditions and also every time a viPrintf operation completes VI_ATTR_DMA_ALLOW_EN This attribute specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE In some implementations this attribute may have global effects even though it is documented to be a local attribute Since this affects performance and not functionality that behavior is acceptable VI_ATTR_RD_BUF_OPER_MODE Determines the operational mode of the read buffer When the operational mode is set to VI_FLUSH_DISABLE default the buffer is flushed only on explicit calls to viFlush If the operational mode is set to VI_FLUSH_ON_ACCESS the buffer is flushed every time a viScan operation completes VI_ATTR_FILE_APPEND_EN This attribute specifies whether viReadToFile will overwrite truncate or append when opening a file GPIB Specific INTFC Resource Attr VI_ATTR_GPIB_ PRIMARY ADDR ibutes Primary address of the local GPIB controller used by the given session VI_ATTR_GPIB_SECONDARY_ADDR Secondary address of the local GPIB controller used by the given session VI_ATTR_GPIB_REN_STATE This attribute returns the current state of the GPIB REN Remote ENable interface line VI_ATTR_GPIB_ATN STATE This attribute shows the current state of the GPIB ATN ATtentioN interface line VI_ATTR_GPIB_ND
31. Set Attribute viSetAttribute ViSession ViEvent ViFindList vi ViAttr attribute ViAttrState attrState Get Status Code Description viStatusDesc ViSession ViEvent ViFindList vi viStatus status ViString desc Terminate Asynchronous Operation viTerminate ViSession vi ViUInt16 degree ViJobId jobld Lock Resource viLock ViSession vi ViAccessMode lockType ViUInt32 timeout ViKeyId requestedKey VikeyId accessKey Unlock Resource viUnlock ViSession Vi Map Trigger Source Line to Destination Line viMapTrigger ViSession vi ViInt16 trigSrc ViInt16 trigDest ViUInt16 mode Map Trigger Line to Another Trigger Line viUnmapTrigger ViSession vi ViInt16 trigSrc ViInt16 trigDest Chapter 7 153 VISA Language Reference VISA Functions Overview Operation Function Type Parameter1 Type Parameter2 Event Handling Interrupts Enable Event viEnableEvent ViSession vi ViEventType eventType ViUInt16 mechanism ViEventFilter context Disable Event viDisableEvent ViSession vi ViEventType eventType ViUInt16 mechanism Discard Events viDiscardEvents ViSession vi ViEventType eventType ViUInt16 mechanism Wait on Event viWaitOnEvent ViSession vi ViEventType inEventType ViUInt32 timeout ViEventType outEventType ViEvent outContext Install Handler vilInstallHandler ViSession vi ViEventType eventType ViH
32. VISA Type Definitions VISA Data Type Type Definition Description ViUInt32 unsigned long A 32 bit unsigned integer ViPUInt32 ViUInt32 The location of a 32 bit unsigned integer ViAUInt32 ViUInt32 The location of a 32 bit unsigned integer ViInt32 signed long A 32 bit signed integer ViPInt32 ViInt32 The location of a 32 bit signed integer ViAInt32 ViInt32 The location of 32 bit signed integer viUInt16 unsigned short A 16 bit unsigned integer ViPUInt16 ViUInt16 The location of a 16 bit unsigned integer ViAUInt16 ViUInt16 The location of a 16 bit unsigned integer ViInt16 signed short A 16 bit signed integer ViPInt16 ViInt16 The location of a 16 bit signed integer ViAInt16 ViInt16 The location of 16 bit signed integer ViUInt8 unsigned char An 8 bit unsigned integer ViPUInt8 ViUInt8 The location of an 8 bit unsigned integer ViAUInt8 ViUInt8 The location of an 8 bit unsigned integer ViInt8 signed char An 8 bit signed integer ViPInt8 ViInt8 The location of an 8 bit signed integer ViAInt8 ViInt8 The location of an 8 bit signed integer ViAddr void A type that references another data type ViPAddr ViAddr The location of a ViAddr ViChar char An 8 bit integer representing an ASCII character ViPChar ViChar The location of a ViChar ViByte unsigned char An 8 bit unsigned integer representing an extended ASCII charac
33. 373 VISA Resource Classes This appendix describes VISA resource classes including resource overviews attributes events and operations This appendix includes Resource Classes Overview Instrument Control INSTR Resource Memory Access MEMACC Resource GPIB Bus Interface INTFC Resource VXI Mainframe Backplane BACKPLANE Resource Servant Device Side SERVANT Resource TCPIP Socket SOCKET Resource NOTE Although the Servant Device Side SERVANT Resource is defined by the VXIplug amp play Systems Alliance Specification and is described in this Appendix the SERVANT Resource is not supported in Agilent VISA 374 Appendix B VISA Resource Classes Resource Classes Overview Resource Classes Overview This section summarizes VISA resource classes and shows applicable interface types for each resource class Resource Classes vs Interface Types The following table shows the six resource classes that a complete VISA system fully compliant with the VXiplug amp play Systems Alliance specification can implement Since not all VISA implementations may implement all resource classes for all interfaces the following table also shows the interfaces applicable to various resource classes Resource Class Interface Types Resource Class Description Instrument Control INSTR Generic GPIB GPIB Device operations reading writing VXI Serial TCPIP VXI triggering etc GPIB Bus Interface Gene
34. A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_NSUP_FMT The given session or object reference is invalid both are the same value A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viVxiCommandQuery vi mode cmd response Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INP_PROT_VIOL Device reported an input protocol error occurred during transfer 364 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer VI_ERROR_RAW_RD_PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW_WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RESP_PENDING A previous response is still pending causing a multiple query error
35. Completion Code Description VI_SUCCESS Event handler successfully uninstalled Error Codes Description VI_ERROR_HNDLR_NINSTALLED A handler is not currently installed for the specified event VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_HNDLR_REF VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT Either the specified handler reference or the user context value or both does not match any installed handler The given session or object reference is invalid both are the same value See the handler prototype viEventHandler for its parameter description See the viEnableEvent description for information about enabling different event handling mechanisms See individual event descriptions for context definitions Chapter 7 293 VISA Language Reference viUnlock DOi viUnlock Syntax viUnlock ViSession Vi Description This function is used to relinquish a lock previously obtained using the viLock function Parameters Name Direction Type Description vi IN ViSession Unique logical identifier to a session Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS The lock was successfully relinquished VI_SUCCESS_NESTED_ The call succeeded but this session still ha
36. Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state 338 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_NCIC vi does not refer to an interface that is currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW_RD_PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW_WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viClose Vi Timeout expired before function completed Codes Description VI_SUCCESS Session closed successfully VI_ERROR_CLOSING_FAILED VI_ERROR_INV_OBJECT Unable to deallocate the previously allocated data structures corresponding to this session or object reference The given object reference is invalid
37. For this system the IO Config utility has been used to assign the LAN card a VISA name of TCPIPO For the addressing examples instrument1 has been addressed by its machine name instrument 2 has been addressed by its IP address and instrument3 by its LAN name inst0 Since unique names have been assigned by IO Config you can now use the VISA viOpen command to open the I O paths to the GPIB instruments as shown in the figure a k LAN Client LAN Interface VISA Name Windows PC LAN LAN Instruments instrument machine name 5 VXI 11 2 GPIB Emulation gpib0 5 1 2 3 4 IP address 3 VXI 11 2 VISA Name GPIB Emulation gpib0 3 TCPIPO LAN Card instrument3 VXI 11 3 LAN instrument instO VISA Addressing Using LAN Client viOpen TCPIPO instrument1 gpib0 5 INSTR Open IO path to LAN instrument at address 5 viOpen TCPIPO 1 2 3 4 gpib0 3 INSTR Open IO path to LAN instrument at address 3 TCPIPO instrument3 inst0 INSTR Open IO path to LAN instrument3 J Chapter 6 135 Example VISA LAN Client Gateway Interface Programming via LAN LAN Interfaces Overview VISA LAN Client Interface Overview There are two main configurations for a VISA LAN Client interface E VISA LAN Client Gateway E VISA LAN Client LAN This section provides an example of each configurati
38. VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed viWaitOnEvent vi ineventType timeout outEventType outcontext Codes Description VI_SUCCESS Wait terminated successfully on receipt of an event occurrence The queue is empty VI_SUCCESS_QUEUE_NEMPTY Wait terminated successfully on receipt of an event notification There is still at least one more event occurrence available for this session VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given vi does not identify a valid session VI_ERROR_TMO Specified event did not occur within the specified time period Appendix A 365 VISA Library Information VISA Error Codes viWrite vi buf count retCount Codes Description VI_SUCCESS Transfer completed VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INP_PROT_VIOL Device reported an input protocol error occurred during transfer VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_SETUP The given vi does not iden
39. When the session is mapped these attributes are RO read only Appendix B 397 VISA Resource Classes Memory Access MEMACC Resource MEMACC Resource Attribute Descriptions Attribute Name Description Generic MEMACC Resource Attributes VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_TMO_VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism VI_ATTR_DMA_ALLOW_EN This attribute specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE In some implementations this attribute may have global effects even though it is documented to be a local attribute Since this affects performance and not functionality that behavior is acceptable VXI and GPIB VXI Specific MEMACC Resource Attributes VI_ATTR_VXI_LA Logical address of the local controller VI_ATTR_SRC_INCREMENT This is used in the viMoveInxx operation to specify how much the source offset is to be incremented after every transfer The default value of this attribute is 1 that is the source address will be incremented by 1 after each transfer and the viMoveInxx operation move
40. sceeeeees 149 VISA F unctons Dy TYPE ices eee 153 VASS oF UWE NA i 158 ee O O a 160 i esr LIEN nal uosa 163 MAES A cdi os A E A E E E E 165 VEAN E seniai a 167 E r nr Orn ere Ree ere ens mere Ter oer tye irene 169 RE ah al E E hd aa a E A No te alle at 171 VDE ab kc sicuri 173 9A SCA EVO S o N 176 VENDIO OW cenina ET 179 Ra EOE aN aaa Soot da ected 183 AF MONEN oiran prer etsrrearonr vara rr uryt ere nr sent rer ee ryerrrer re 188 SAI SIG sirrane EA 189 PUIG EE E EEE A AE I E E E E eres 194 VOGA aa A r rep verre 196 AIC CHT NAIA siia EE 198 ADIL ORTAATN eanan a 200 VGPDCOnNTIAREN kosnu E EEEE 202 vOpPDPASSCOMO aaia a a aa 204 vVGpPDSENdIF E senurnar EN 206 vilhe VU and V2 sensura 207 SUMS Tall IAIN OT ean EE 210 Contents 5 EOE cect tsetse teagan emetic deen eats 212 SADR AN Sa ch aa ce eee a aut Baraat alas cl 216 LSU A O Jenene neg ere nrer mercer ree Or ae Cr penne n yer rer cere eneer reer errr ree tren Te 219 APPIN AIO Cina nad nGeasuneiotsen eheaaee ze AMED cess chris tag teers aencemnto AN 223 AR a se ors pede ts Salerno eae ay ana lnc Al EN oa ll 224 RAGS E E E tear eat emia 227 viMoveln8 viMoveln16 and viMoveln32 aassnnnssesnnnnsnerrnnnne 221 viMoveOut8 viMoveOut16 and viMoveOut32 c cc ceeeeeeeees 234 NCSI abide haste Ae hea gala ater ies a ady Sind alle SN ee cals Nada ari od aes a gg 237 MOPSNDSTAU IM eienn 241 VIOUIB viQut16 and WOU sessirnir 243 RELEE Us pte aa ATESA ER A asd ate E T
41. viScanf vi St buf Print results printf Instrument identification string s n buf Close sessions viClose vi viClose defaultRM Chapter 3 33 Building a VISA Application in HP UX Building a VISA Program in HP UX Example Program Contents A summary of the VISA function calls used in the example program follows For a more detailed explanation of VISA functionality see Chapter 4 Programming with VISA See Chapter 7 VISA Language Reference for more detailed information on these VISA calls visa h This file is included at the beginning of the file to provide the function prototypes and constants defined by VISA ViSession The ViSession is a VISA data type Each object that will establish a communication channel must be defined as ViSession viOpenDefaultRM You must first open a session with the default resource manager with the viOpenDefaul1tRm function This function will initialize the default resource manager and return a pointer to that resource manager session viOpen This function establishes a communication channel with the device specified A session identifier that can be used with other VISA functions is returned This call must be made for each device you will be using viPrintf and viScanf These are the VISA formatted I O functions that are patterned after those used in the C programming language The viPrintf call sends the IEEE 488 2 RST command to the instrument and puts it
42. Building a VISA Application in Windows This chapter gives guidelines to build a VISA application in a Windows environment The chapter contains the following sections H Building a VISA Program C C E Building a VISA Program Visual Basic E Logging Error Messages 18 Chapter 2 Linking to VISA Libraries Microsoft Visual C Version 6 0 Compilers Building a VISA Application in Windows Building a VISA Program C C Building a VISA Program C C This section gives guidelines to build VISA programs using C C language including E Compiling and Linking VISA Programs C C E Example VISA Program C C Compiling and Linking VISA Programs C C This section provides a summary of important compiler specific considerations for several C C compiler products when developing Win32 applications Your application must link to one of the VISA import libraries as follows assuming default installation directories E VISA on Windows 95 Windows 98 or Windows Me C Program Files VISA WIN95 LIB MSC VISA32 LIB Microsoft compilers C Program Files VISA WIN95 LIB BC VISA32 LIB Borland compilers E VISA on Windows NT or Windows 2000 C Program Files VISA WINNT LIB MSC VISA32 LIB Microsoft compilers C Program Files VISA WINNT LIB BC VISA32 LIB Borland compilers 1 Select Project Update All Dependencies from the menu 2 Select Project Settings from the menu and click the C C button 3 Select Co
43. Timeout expired before function completed Chapter 7 267 Syntax Description Parameters VISA Language Reference viReadToFile viReadToFile viReadToFile ViSession vi ViConstString fileName ViUInt32 count ViUInt32 retCount Read data synchronously and store the transferred data in a file This read operation synchronously transfers data The file specified in fileName is opened in binary write only mode If the value of VI_ATTR_FILE APPEND_EN is VI_FALSE any existing contents are destroyed Otherwise the file contents are preserved The data read is written to the file This operation returns only when the transfer terminates This operation is useful for storing raw data to be processed later VISA uses ANSI C file operations The mode used by viReadToFile is wb or ab depending on the value of VI_LATTR_FILE_APPEND_EN Name _ Direction Type Description count IN viUInt32 Number of bytes to be read fileName IN viConstString Name of file to which data will be written retCount OUT ViUInt32 Number of bytes actually transferred vi IN ViSession Unique logical identifier to a session Special Value for retCount Parameter Completion Code Description VI_NULL Do not return the number of bytes transferred 268 Chapter 7 Return Values Type viStatus VISA Language Reference viReadToFile This is the function return status It returns e
44. Using Array Size Modifier 53 Using Callback Method 70 Using Field Width Modifier 51 Using Precision Modifier 52 Using Queuing Method 77 Using viPeek16 109 VISA LAN Client Gate 136 VISA LAN Client LAN 138 VXI E8491B Interfaces 98 VXI High Level Memory 104 VXI Low Level Memory 109 VXI Memory I O 114 Wait on Event for SRQ 79 F field width 51 finding resources 47 formatted I O argument length modifier 52 array size 53 buffers 57 conversion 50 field width 51 functions 49 special characters 53 F continued functions formatted I O 49 viAssertIntrSignal 158 viAssertTrigger 160 viAssertUtilSignal 163 viBufRead 165 viBufWrite 167 viClear 169 viClose 171 viDisableEvent 173 viDiscardEvents 176 viEnableEvent 179 viEventHandler 183 viFindNext 188 viFindRsrc 189 viFlush 194 viGetAttribute 196 viGpibCommand 198 viGpibControlATN 200 viGpibControlREN 202 viGpibPassControl 204 viGpibSendlFC 206 vilni6 207 viln32 207 viln8 207 vilnstallHandler 210 viLock 212 viMapAddress 216 viMapTrigger 219 viMemAlloc 221 viMemFree 223 viMove 224 viMoveAsync 227 viMoveln16 231 viMoveln32 231 viMoveln8 231 viMoveOut16 234 viMoveOut32 234 viMoveOut8 234 viOpen 237 Index F continued functions continued viOpenDefaultRM 241 viOut16 243 viOut32 243 viOut8 243 viParseRsrc 246 viPeek16 248 viPeek32 248 viPeek8 248 viPoke16 249
45. VISA provides two different methods you can use to program register based devices high level memory functions or low level memory functions GPIB Interfaces Overview As shown in the following figure a typical GPIB interface consists of a Windows PC with one or more GPIB cards PCI and or ISA cards installed in the PC and one or more GPIB instruments connected to the GPIB cards via GPIB cable I O communication between the PC and the instruments is via the GPIB cards and the GPIB cable This figure shows GPIB instruments at addresses 3 and 5 GPIB Interface 82350 PCI GPIB Cards Windows PC GPIB Cable GPIB Instruments 5 82350 GPIB Card 1 3 82350 GPIB Card 2 3 96 Chapter 5 Programming via GPIB and VXI GPIB and VXI Interfaces Overview Example GPIB The GPIB interface system in the following figure consists of a Windows PC 82350 Interface with two 82350 GPIB cards connected to three GPIB instruments via GPIB cables For this system the IO Config utility has been used to assign GPIB card 1 a VISA name of GPIBO and to assign GPIB card 2 a VISA name of GPIB1 VISA addressing is as shown in the figure GPIB Interface 82350 PCI GPIB Cards Interface VISA Names Windows PC GPIB Cable GPIB Instruments 5 VISA Name GPIBO 82350 GPIB Card 1 3 erIBe 82350 GPIB Card 2 3 VISA Addressi
46. VI_A24 SPACE Map the A24 address space of VXI MXI bus VI_A32_SPACE Map the A32 address space of VXI MXI bus If the viSession parameter vi refers to an INSTR session the mapBase parameter specifies a relative offset in the instrument s mapSpace If the viSession parameter vi refers toa MEMACC session the mapBase parameter is an absolute offset from the start of the VXI mapSpace NOTE For a given session you can only have one map at one time If you need to have multiple maps to a device you must open one session for each map needed The mapBase parameter specified in the viMapAddress operation for an INSTR resource is the offset address relative to the device s allocated address base for the corresponding address space specified For example if mapSpace specifies VI_A16_SPACE mapBase specifies the offset from the logical address base address of the VXI device specified If mapSpace specifies VI_A24_ SPACE or VI_A32_SPACE mapBase specifies the offset from the base address of the VXI device s memory space allocated by the VXI Resource Manager within VXI A24 or A32 space 216 Chapter 7 Parameters Return Values VISA Language Reference viMapAddress Name Direction Type Description access IN ViBoolean VI_FALSE address OUT ViAddr Address in your process space where the memory was mapped mapBase IN ViBusAddress Offset in bytes of the memory to be mapped
47. VXI plug amp play instrument drivers thread An operating system object that consists of a flow of control within a process A single process may have multiple threads with each having access to the same data space within the process However each thread has its own stack and all threads may execute concurrently with each other either on multiple processors or by time sharing a single processor Note that multi threaded applications are only supported with 32 bit VISA top level example A high level test oriented instrument driver function It is typically developed from the instrument driver subsystem functions VISA Virtual Instrument Software Architecture VISA is a common O library where software from different vendors can run together on the same platform Glossary 429 virtual instrument A name given to the grouping of software modules in this case VISA resources with any associated or required hardware to give the functionality of a traditional stand alone instrument Within VISA a virtual instrument is the logical grouping of any of the VISA resources The VISA Instrument Control Resources Organizer serves as a means to group any number of any type of VISA Instrument Control Resources within a VISA system VISA Virtual Instrument Software Architecture This is the general name given to this document and its associated architecture The architecture consists of two main VISA components the VISA Resource Manager and t
48. completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_INV_SESSION The given session or object reference is VI_ERROR_INV_OBJECT invalid both are the same value VI_ERROR_INV_SETUP Unable to start write operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed See Also viWrite viBufRead 168 Chapter 7 Syntax Description Parameters Return Values viClear viClear ViSession Vi VISA Language Reference viClear Clear a device This operation performs an IEEE 488 1 style clear of the device For VXI the Word Serial Clear command should be used For GPIB systems the Selected Device Clear command should be used For a session to a Serial device or TCPIP socket if VI_LATTR_IO_ PROT is VI_PROT_4882_STRS the device is sent the string CLS n Otherwise this operation is not valid Name Direction Type Description vi IN ViSession Unique logical identifier to a session Type ViStatus This is the function
49. handler invocation for occurrences of the event type is deferred to a later time If no handler is installed for an event type the request to enable the callback mechanism for the event type returns VI_ERROR_HNDLR_NINSTALLED If a session has events pending in its queue s and viClose is invoked on that session all pending event occurrences and the associated event contexts that have not yet been delivered to the application for that session are freed by the system Name Direction Type Description context IN vifventFilter vI_ NULL Not used for VISA 1 0 eventType IN ViEventType Logical event identifier mechanism IN ViUInt16 Specifies event handling mechanisms to be enabled The queuing mechanism is enabled by VI_QUEUE and the callback mechanism is enabled by VI_HNDLR or VI_SUSPEND_HNDLR It is possible to enable both mechanisms simultaneously by specifying bit wise OR of VI_QUEUE and one of the two mode values for the callback mechanism vi IN ViSession Unique logical identifier to a session 180 Chapter 7 VISA Language Reference viEnableEvent Special Value for eventType Parameter Value Action Description VI_ALL_ ENABLED EVENTS Switch all events that were previously enabled to the callback mechanism specified in the mechanism parameter The following events can be enabled Event Name VI_EVENT_IO COMPLETION Notification that an asynchronous o
50. implementation VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viGpibControl1REN vi mode Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER VI_ERROR_NSYS_CNTLR The given vi does not support this operation The interface associated with this session is not the system controller VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viGpibPassControl vi primAddr secAddr Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO An unknown I O error occurred during transfer Appendix A 343 VISA L
51. machine1 Remote SICL Interface Name hpib VISA Addressing Using LAN Client viOpen TCPIPO machine1 hpib 5 INSTR Open IO path to GPIB instrument at address 5 viOpen TCPIPO machine1 hpib 3 INSTR Open lO path to GPIB instrument at address 3 VISA Addressing Using VISA LAN Client viOpen GPIB1 5 INSTR Open IO path to LAN instrument at address 5 Gory GPIB1 3 INSTR Open IO path to LAN instrument at address 3 ey Chapter 6 137 Example VISA LAN Client LAN Interface Programming via LAN LAN Interfaces Overview The VISA LAN Client interface system in the following figure consists of a Windows PC with a LAN card and three LAN instruments Instrument1 and instrument2 are VXI 11 2 GPIB Emulation instruments and instruments is a VXI 11 3 LAN instrument For this system the IO Config utility has been used to assign the LAN card a VISA name of TCPIPO In addition two VISA LAN Clients have been configured with the interface names and host names shown in the figure For the addressing examples instrument1 has been addressed by its machine name instrument 2 has been addressed by its IP address and instrument3 by its LAN name inst0 Since unique names have been assigned by IO Config you can now use the VISA viOpen command to open the I O paths to the GPIB instruments as shown in the figure Note however that you cannot talk to instrument3 with VISA LAN Clien
52. offset ViUInt32 val32 Move data from source to destination viMove ViSession vi ViUInt16 srsSpace ViBusAddress srcOffset ViUInt16 srcWidth ViUInt16 destSpace ViBusAddress destOffset ViUInt16 destWidth ViBusSize length Move data from source to destination asynchronously viMoveAsync ViSession vi ViUInt16 srsSpace ViBusAddress srcOffset ViUInt16 srcWidth ViUInt16 destSpace ViBusAddress destOffset ViUInt16 destWidth ViBusSize length ViJobId jobld Move 8 bit Value from Device Memory to Local Memory viMoveIn8 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt8 buf8 Move 16 bit Value from Device Memory to Local Memory viMoveIn16 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt16 buf16 Move 32 bit Value from Device Memory to Local Memory viMoveIn32 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt32 buf32 Move 8 bit Value from Local Memory to Device Memory viMoveOut8 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt8 buf8 156 Chapter 7 VISA Language Reference VISA Functions Overview Operation Function Type Parameter1 Type Parameter2 Memory I O continued Move 16 bit Value from Local Memory to Device Memory viMoveOut16 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt16 buf16 M
53. this term is synonymous with the connotation of the word object in object oriented architectures For VISA resource more specifically refers to a particular implementation or instance in object oriented terms of a Resource Class In VISA every defined software module is a resource resource class The definition for how to create a particular resource In general this is synonymous with the connotation of the word class in object oriented architectures For VISA Instrument Control Resource Classes this refers to the definition for how to create a resource that controls a particular capability of a device 428 Glossary session The same as Communication Channel An instance of a communications path between a software element and a resource Every communication channel in VISA is unique SRQ IEEE 488 Service Request This is an asynchronous request an interrupt from a remote GPIB device that requires service A service request is essentially an interrupt from a remote device For GPIB this amounts to asserting the SRQ line on the GPIB For VXI this amounts to sending the Request for Service True event REQT status byte A byte of information returned from a remote device that shows the current state and status of the device If the device follows IEEE 488 conventions bit 6 of the status byte indicates if the device is currently requesting service template function Instrument driver subsystem function common to the majority of
54. you can choose between normal and 488 style transfers in which case the viAssertTrigger viReadSTB viClear operations send 488 2 defined strings VI_ATTR_RD_BUF_OPER_MODE Determines the operational mode of the read buffer When the operational mode is set to VI_FLUSH_DISABLE default the buffer is flushed only on explicit calls to viFlush If the operational mode is set to VI_FLUSH_ON_ACCESS the buffer is flushed every time a viScanf operation completes VI_ATTR_SEND_END_EN VI_ATTR_SUPPRESS_END_EN Whether to assert END during the transfer of the last byte of the buffer Whether to suppress the END indicator termination If this attribute is set to VI_TRUE the END indicator does not terminate read operations If this attribute is set to VI_FALSE the END indicator terminates read operations VI_ATTR_TERMCHAR Termination character When the termination character is read and VI_ATTR_TERMCHAR_EN is enabled during a read operation the read operation terminates VI_ATTR_TERMCHAR_EN Flag that determines whether the read operation should terminate when a termination character is received VI_ATTR_TMO_VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism VI_ATTR_TRIG_ ID Identifier for the current triggering mechanism 38
55. 0 Each invocation of vilLock for the same session and for the same ockType increases the lock count A shared lock returns with the same accessKey every time When a session locks the resource a multiple number of times it is necessary to invoke the viUnlock function an equal number of times in order to unlock the resource That is the lock count increments for each invocation of viLock and decrements for each invocation of viUnlock A resource is actually unlocked only when the lock count is 0 NOTE On HP UX SIGALRM is used in implementing the viLock when timeout is non zero The viLock function s use of SIGALRM is exclusive an application should not also expect to use SIGALRM at the same time NOTE On HP UX some semaphores used in locking are permanently allocated and diminish the number of semaphores available for applications If the operating system runs out of semaphores the number of semaphores may be increased by doing the following 1 Run sam 2 Double click Kernel Configuration 3 Double click Configurable Parameters 4 Change semmni and semmns to a higher value such as 300 Chapter 7 213 Parameters VISA Language Reference viLock Name Direction Type Description accessKey OUT VikeyId This parameter should be set to VI_NULL when lockType is VI_EXCLUSIVE_LOCK exclusive lock When trying to lock the resource as VI_SHARED_LOCK shared lock the resource r
56. 232 and LAN interfaces VISA for the VXI interface on Windows NT is shipped with the Agilent Embedded VXI Controller product only LAN support from within VISA occurs via an address translation such that a GPIB interface can be accessed remotely over a computer network VISA is supported on the GPIB VXI GPIB VXI and LAN interfaces on HP UX version 10 20 LAN support from within VISA occurs via an address translation such that a GPIB interface can be accessed remotely over a computer network VISA has two specific types of users The first type is the instrumentation end user who wants to use VXIp ug amp play instrument drivers in his or her applications The second type of user is the instrument driver or I O application developer who wants to be compliant with VXIplug amp play standards Software development using VISA is intended for instrument I O and C C or Visual Basic programmers who are familiar with the Windows 95 Windows 98 Windows Me Windows 2000 Windows NT or HP UX environment To perform VISA installation and configuration on Windows NT or HP UX you must have system administration privileges on the Windows NT system or super user root privileges on the HP UX system Introduction 15 Introduction VISA Overview VISA Documentation This table shows associated documentation you can use when programming with Agilent VISA in the Windows or HP UX environment Agilent VISA Documentation Document Description
57. 7 271 VISA Language Reference viScanf There is a one to one correspondence between format conversions and arg parameters in formatted I O read operations except E Ifa is present no arg parameters are used E lfa is present instead of field width two arg parameters are used The first arg is a reference to an integer c s t T This arg defines the maximum size of the string being read The second arg points to the buffer that will store the read data E Ifa is present instead of array_size two arg parameters are used The first arg is a reference to an integer d f or a reference toa long integer b y This arg defines the number of elements in the array The second arg points to the array that will store the read data If a size is present in field width for the s t and T format conversions in formatted I O read operations either as an integer or a witha corresponding arg the size defines the maximum number of characters to be stored in the resulting string For ANSI C compatibility the following conversion codes are also supported for input codes These codes are i o u n x X e E g G p L and For further explanation of these conversion codes see the ANSI C Standard If viScanf times out the read buffer is cleared before viScanf returns When viScanf times out the next call to viScanf will read from an empty buffer and force a read from the device The followi
58. A N A VI_ATTR_SRC_BYTE_ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ ORDER VI_LITTLE_ENDIAN ENDIAN VI_ATTR_DEST_ BYTE _ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ ORDER VI_LITTLE_ENDIAN ENDIAN VI_ATTR_WIN_BYTE_ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ ORDER VI_LITTLE_ENDIAN ENDIAN 396 Appendix B VISA Resource Classes Memory Access MEMACC Resource Attribute Name Access Data Type Range Default Privilege VXI and GPIB VXI Specific MEMACC Resource Attributes VI_ATTR_SRC_ RW Local viUInt16 VI_DATA_NPRIV VI_DATA_ ACCESS PRIV VI_DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV VI_D64_NPRIV VI_D64_ PRIV VI_ATTR_DEST_ RW Local viUInt16 VI_DATA_NPRIV VI_DATA_ ACCESS _PRIV VI DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV VI_D64_NPRIV VI_D64_ PRIV VI_ATTR_WIN_ RW Local viuInt16 VI_DATA_NPRIV VI_DATA_ ACCESS _PRIV VI DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV GPIB VXI Specific MEMACC Resource Attributes VI_ATTR_INTF_ RO Global viuInt16 0 to FFFF N A PARENT_NUM VI_ATTR_GPIB_ RO Global ViUInt16 0 to 30 N A PRIMARY_ADDR VI_ATTR_GPIB_ RO Global ViUInt16 0 to 31 N A SECONDARY_ADDR VI NO SEC ADDR For VISA 2 2 the attributes VI_ATTR_WIN_BYTE ORDER and VI_ATTR_WIN_ACCESS PRIV are RW readable and writeable when the corresponding session is not mapped VI_LATTR_WIN_ACCESS VI_NMAPPED
59. Additionally to increase program execution speed the low level memory functions do not return error codes Programming the Registers When using the low level memory functions for direct register access you must first map a range of addresses using the viMapAddress function Next you can send a series of peeks and pokes using the viPeek and viPoke low level memory functions Then you must free the address window using the viUnmapAddress function A process you could use is 1 Map memory space using viMapAddress 2 Read and write to the register s contents using viPeek32 and viPoke32 3 Unmap the memory space using viUnmapAddress You can program the registers using low level functions for 8 16 or 32 bit transfers This table summarizes the low level memory functions Function Description viMapAddress vi mapSpace Maps the specified memory mapBase mapSize access Space suggested address viPeek8 vi addr val8 Reads 8 bits of data from address specified viPeek16 vi addr vall6 Reads 16 bits of data from address specified Chapter 5 107 Mapping Memory Space Programming via GPIB and VXI Using Low Level Memory Functions Function Description viPeek32 vi addr val32 Reads 32 bits of data from address specified viPoke8 vi addr val8 Writes 8 bits of data to address specified viPokel16 vi addr vall6 Writes 16 bits of data to address sp
60. EE E T E ES 246 viPeek8 viPeek16 and viPeek32 assnennesssennnnessnerrrerssrsrrrrene 248 viPoke8 viPoke16 and VIPOKE32 ceeeecccceceseeeeeeeeeeeeaeeeeees 249 MP EIU E AN teste N PE E TAN EAN 250 E e E E O E E E E A r er trercre 259 VRE AA aa 261 e e a I E E EA A E E E A E 264 MRSJ STE oO 266 ASAIN PO Nes ck esd tats tas N 268 TEE i PEATE EEEE E E IE so EO a 271 OSATO SeaneR ee ere eee Pe ise eer air eee Pee ee ene Eero 281 NS CEMA ara EE N 283 OF E r rrrtrr te eiear cnr ererine tre eee ne perry ei nO rere c 285 MACON 5537205 1s sieyveean snd siRiaad dee ees a a ee 287 By key Fe UI ci Ec E ea ea ee er Ee one PY RE oR er Ee 289 GINA EEEE E TAE E neces AEE 290 SALIVA WONG aA 292 LEE IE ce Sena ee neces RP Pre tee rer V nee eer ere er 294 BUR TUG 8 02 Lica oh ae ep E 295 LFS OED a 296 i RI a nip 298 A A ca ciigisehiatey gid aw naa Raeiawie tiers eigen NaeLeeT 300 RE MIN wezacce tainted RT 302 AS PAM iiia sans aeadianialasee nmenneaNtes 304 AEE se iE ene ne anne ET enn E IE rt Tune Ome Ste EA E 306 A AL INIA AUG eds 25s alta 5 fil date Passes nasal ae ailasls ates salad Bas 308 A AILS FE WOU ecaccd site capaa cence ieaacausawaneeiss a a 311 EN E AEPA E EEE A E E ENEA SIZ a L A N E A E E T te 319 VIPERS FROME WS ciini A meets 321 Contents 6 A VISA Library Information ccccseeeeeesseeeeeeessseeeeeeeesseeeeeeeeeeeenenes 323 VISA Type DPRININOMS rsisi 325 MISA ENO COES eniad i e 328 VISA Error Codes Numerical
61. Error Codes Description VI_ERROR_INV_LINE The value specified by the line parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed See Also BACKPLANE Resource Description 164 Chapter 7 Syntax Description Parameters Return Values VISA Language Reference viBufRead viBufRead viBufRead ViSession Vi ViBuf buf ViUInt32 count viuInt32 retCount Similar to viRead except that the operation uses the formatted I O read buffer for holding data read from the device This operation is similar to viRead and does not perform any kind of data formatting It differs from viRead in that the data is read from the formatted I O read buffer the same buffer as used by viScan and related operations rather than directly from the device This operation can intermix with the viScanf operation but use with the viRead operation is discouraged Name Direction Type Description buf OUT ViBuf Represents the location of a buffer to receive data from the device count IN ViUInt32 Number of bytes to be read retCount OUT ViUInt32 Represe
62. Error Codes The specifed access mode was successfully acquired and this session has nested shared locks Description VI_ERROR_INV_ACCESS_KEY The requestedKey value passed is not a valid access key to the specified resource VI_ERROR_INV_LOCK_TYPE The specified type of lock is not supported by this resource VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given vi does not identify a valid session or object VI_ERROR_RSRC_LOCKED The specified type of lock cannot be obtained because the resource is already locked with a lock type incompatible with the lock requested VI_ERROR_TMO The specified type of lock could not be obtained within the specified timeout period viUnlock For more information on locking see Chapter 4 Programming with VISA Chapter 7 215 Syntax Description VISA Language Reference viMapAddress viMapAddress viMapAddress ViSession vi ViUInt16 mapSpace ViBusAddress mapBase ViBusSize mapSize ViBoolean access ViAddr suggested ViAddr address This function maps in a specified memory space The memory space that is mapped is dependent on the type of interface specified by the vi parameter and the mapSpace parameter see the following table The address parameter returns the address in your process space where memory is mapped The values for the mapSpace parameter are Value Description VI_A16_SPACE Map the A16 address space of VXI MXI bus
63. FF OA linefeed VI_ATTR_TERMCHAR _ RW Local ViBoolean VI_TRUE VI_FALSE EN VI_FALSE VI_ATTR_TMO_ VALUE RW Local ViUInt32 VI_TMO_IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO_INFINITE VI_ATTR_WR_BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_WHEN FULL WHEN_FULL VI_ATTR_DMA ALLOW_ RW Local ViBoolean VI_TRUE VI_FALSE EN VI_FALSE VI_ATTR_RD_BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_ DISABLE DISABLE VI_ATTR_FILE_ RW Local ViBoolean VI_TRUE VI_FALSE APPEND _EN VI_FALSE VI_ATTR_IO PROT RW Local ViUInt16 VI_NORMAL VI_NORMAL VI_PROT_4882_STRS TCPIP Specific SOCKET Resource Attributes VI_ATTR_TCPIP ADDR RO Global viString N A N A VI_ATTR_TCPIP HOST RO Global viString N A N A NAME VI_ATTR_TCPIP PORT RO Global viUInt16 0 to FFFF N A VI_ATTR_TCPIP NODE RW Local ViBoolean VI_TRUE VI_TRUE LAY VI_FALSE VI_ATTR_TCPIP KEEP RW Local ViBoolean VI_TRUE VI_FALSE ALIVE VI_FALSE Appendix B 421 VISA Resource Classes TCPIP Socket SOCKET Resource SOCKET Resource Attribute Descriptions Attribute Name Description Generic SOCKET Resource Attributes VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_SEND_END_EN Whether to assert END during the transfer of the last byte of the buffer VI_ATTR
64. Files VISA WINNT LIB BC 20 Chapter 2 Example C C Program Source Code Building a VISA Application in Windows Building a VISA Program C C Example VISA Program C C This section lists an example program called idn that queries a GPIB instrument for its identification string This example assumes a Win32 Console Application using Microsoft or Borland C C compilers on Windows E For VISA on Windows 95 Windows 98 and Windows Me the idn example files are in Program Files VISA WIN95 AGVISA SAMPLES E For VISA on Windows NT or Windows 2000 the idn example files are in Program Files VISA WINNT AGVISA SAMPLES The source file idn c follows An explanation of the various function calls in the example is provided directly after the program listing If the program runs correctly the following is an example of the output if connected to a 54601A oscilloscope If the program does not run see the Event Viewer for a list of run time errors HEWLETT PACKARD 54601A 0 1 7 Arin This example program queries a GPIB device for an identification string and prints the results Note that you must change the address include lt visa h gt include lt stdio h gt void main ViSession defaultRM vi char buf 256 0 Open session to GPIB device at address 22 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB0 22 INSTR VI_NULL VI_ NULL amp vi Initialize device viPri
65. If the viPrintf or viQueryf writeFmt formatted data has fewer characters than specified in the field width it will be padded on the left or on the right if the flag is present You can use an asterisk in place of the integer in viPrintf or viQueryf writeF mt to indicate that the integer is taken from the next argument For the viScanf or viQueryf readF mt functions you can use a sign to indicate that the next argument is a reference to the field width The field width modifier is only supported with viPrintf and viQueryf writeFmt format codes d f s and viScanf and viQueryf readF mt format codes c s and The following example pads numb to six characters and sends it to the session specified by vi int numb 61 viPrintf vi 6d n numb Inserts four spaces for a total of 6 characters 61 E Precision Precision is an optional integer preceded by a period This modifier is only used with the viPrintf and viQueryf writeF mt functions The meaning of this argument is dependent on the conversion character used You can use an asterisk in place of the integer to indicate the integer is taken from the next argument Chapter 4 51 Example Using the Precision Modifier Programming with VISA Sending I O Commands Format Code Description d Indicates the minimum number of digits to appear is specified for the 1 H Q and B flags and the i O u x and X format codes f Indic
66. LAN protocol If that fails the driver will try to connect using the VXI 11 protocol If you want to control the protocol used you can configure more than one LAN Client interface and set each interface to a different protocol The protocol used will then depend on the interface you are connecting through Thus you can have more than one SICL LAN and one VXI 11 protocols for your system In VISA the protocol used is determined by the configuration settings and cannot be changed programatically The LAN Client also supports TCP IP socket reads and writes When you have configured VISA LAN Client interfaces you can then use the interface name specified during configuration in a VISA viOpen call of your program However the LAN server does not support simultaneous connections from LAN clients using the SICL LAN Protocol and from LAN clients using VXI 11 TCP IP Instrument Protocol 132 Chapter 6 Programming via LAN LAN Interfaces Overview There are three LAN servers that can be used with VISA the E2050 LAN GPIB Gateway an HP Series 700 computer running HP UX or a PC running Windows 95 98 Me 2000 NT To use this capability the LAN server must have a local GPIB interface configured for I O LAN Client Interface Overview There are two main configurations for a LAN Client interface E LAN Client Gateway E LAN Client LAN This section provides an example of each configuration and shows applicable VISA viOpen commands See C
67. LAO LA8 LA 24 LA 16 VISA Addressing viOpen GPIB VXI0 24 INSTR Open IO path to VXI instrument at logical address 24 using 82350 GPIB Card and E1406A VXI Command Module at a GPIB primary address 9 a Chapter 5 101 Programming via GPIB and VXI Using High Level Memory Functions Using High Level Memory Functions High level memory functions allow you to access memory on the interface through simple function calls There is no need to map memory to a window Instead when high level memory functions are used memory mapping and direct register access are automatically done The tradeoff however is speed High level memory functions are easier to use However since these functions encompass mapping of memory space and direct register access the associated overhead slows program execution time If speed is required use the low level memory functions discussed in Using Low Level Memory Functions Programming the Registers High level memory functions include the viIn and viOut functions for transferring 8 16 or 32 bit values as well as the viMoveIn and viMoveOut functions for transferring 8 16 or 32 bit blocks of data into or out of local memory You can therefore program using 8 16 or 32 bit transfers High Level Memory This table summarizes the high level memory functions Functions Function Description
68. No limit on number of active maps E A16 A24 and A32 memory access can be mixed in a single vi session E Provides the best performance when transferring large blocks of data E Supports both block and FIFO mode The disadvantage of viMoveIn viMoveOut calls is that they have higher initial overhead than viPeek viPoke Chapter 5 113 Example Using VXI Memory I O Programming via GPIB and VXI Using Low High Level Memory I O Methods This program demonstrates using various types of VXI memory I O memio c This example program demonstrates the use of various memory I O methods in VISA finclude lt visa h gt finclude lt stdlib h gt finclude lt stdio h gt define VXI_INST VX1I0 24 INSTR void main ViSession defaultRM vi ViAddr address ViUInt16 accessMode memPtrl16 id_reg devtype reg memArray 2 unsigned shor unsigned shor unsigned shor unsigned shor ct ct ct ct Open default resource manager and session to instr viOpenDefaultRM amp defaultRM viOpen defaultRM VXI INST VI_NULL VI_NULL amp vi Low level memory I O viPeek1l6 direct memory dereference when allowed 7 Map into memory space viMapAddress vi VI_Al6 SPACE 0x00 0x10 VI_ FALSI VI_NULL amp address Gl Using viPeek ay Read instrument id register contents viPeekl6 vi address amp id reg Read device type regist
69. Resource attribute retrieved successfully Error Codes Description VI_ERROR_INV_MODE VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The value specified by the mode parameter is invalid The given session or object reference is invalid both are the same value VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS VI_ERROR_NSUP_OPER No listeners condition is detected both NRFD and NDAC are deasserted The given vi does not support this operation VI_ERROR_NSYS_CNTLR The interface associated with this session is not the system controller VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access Chapter 7 203 VISA Language Reference viGpibPassControl DOi viGpibPassControl Syntax viGpibPassControl ViSession vi ViUInt16 primAddr ViUInt16 secAdar Description Tell the GPIB device at the specified address to become controller in charge CIC This operation passes controller in charge status to the device indicated by primAddr and secAdar and then deasserts the ATN line This operation assumes that the targeted device has controller capability This operation is valid only on GPIB INTFC interface sessions Parameters Name Direction Type Description primAdadr IN ViUInt16 Primary address of the GPIB dev
70. VISA Language Reference viOpenDefaultRM Error Codes Description VI_ERROR_ALLOC Insufficient system resources to create a session to the Default Resource Manager resource VI_ERROR_INV_SETUP Some implementation specific configuration file is corrupt or does not exist VI_ERROR_SYSTEM_ERROR The VISA system failed to initialize See Also viOpen viFindRsrc viClose 242 Chapter 7 Syntax Description VISA Language Reference viOut8 viOut16 and viOut32 viOut8 viOut16 and viOut32 viOut8 ViSession vi ViUInt16 space ViBusAddress offset ViUInt8 valg viOut16 ViSession vi ViUInt16 space ViBusAddress offset ViUInt16 val16 vi0ut32 ViSession vi ViUInt16 space ViBusAddress offset ViUInt32 val32 This function writes an 8 bit 16 bit or 32 bit word to the specified memory space assigned memory base offset This function takes the 8 bit 16 bit or 32 bit value and stores its contents to the address space pointed to by space The offset must be a valid memory address in the space This function does not require viMapAddress to be called prior to its invocation If the viSession parameter vi refers to an INSTR session the offset parameter specifies a relative offset from the start of the instrument s address space lf the viSession parameter vi refers to a MEMACC session the offset parameter is an absolute offset from the start of memory in that VXI address space The valid e
71. VISA on Windows 95 Windows 98 or Windows Me the idn example files are in C Program Files VISA WIN95 AGVISA SAMPLES vb idn For VISA on Windows NT or Windows 2000 the idn example files are in C Program Files VISA WINNT AGVISA SAMPLES vb idn The steps to build and run the idn example program follow 1 Connect an instrument to a GPIB interface that is compatible with IEEE 488 2 2 Start the Visual Basic 6 0 application NOTE This example assumes you are building a new project no vbp file exists for project If you do not want to build the project from scratch from the menu select File Open Project and select and open the idn vbp file and skip to Step 9 3 Start anew Visual Basic Standard EXE project VB 6 0 will open a new Project1 project with a blank Form Form1 4 From the menu select Project Add Module select the Existing tab and browse to the idn directory 5 The idn example files are located in directory vb samples idn Select the file idn bas and click Open Since the Main subroutine is executed when the program is run without requiring user interaction with a Form Form1 may be deleted if desired To do this right click Form1 in the Project Explorer window and select Remove Forml 6 VISA applications in Visual Basic require the VISA Visual Basic VB declaration file visa32 bas in your VB project This file contains the VISA function definitions and constant declarations needed to make VI
72. VI_A24 SPACE Address the A24 address space of VXI MXI bus VI_A32_SPACE Address the A32 address space of VXI MXI bus The viMoveOut functions do a block move of memory from a VXI device if VI_ATTR_DEST_INCREMENT is 7 However they do a FIFO read of a VXI memory location if VI_ATTR_DEST_INCREMENT is 0 zero The offset specified in the viMoveOut8 viMoveOut16 and viMoveOut32 operations for an INSTR resource is the offset address relative to the device s allocated address base for the corresponding address space specified 234 Chapter 7 Parameters VISA Language Reference viMoveOut8 viMoveOut16 and viMoveOut32 For example if space specifies VI_A16_ SPACE offset specifies the offset from the logical address base address of the VXI device specified If space specifies VI_A24_ SPACE or VI_A32_ SPACE offset specifies the offset from the base address of the VXI device s memory space allocated by the VXI Resource Manager within VXI A24 or A32 space The length specified in the viMoveOutxXx operations is the number of elements of the size corresponding to the operation to transfer beginning at the specified offset Therefore offset length size cannot exceed the amount of memory exported by the device in the given space The length specified in the viMoveOutxXx operations is the number of elements of the size corresponding to the operation to transfer beginning at the specified offset Therefore offset length size can
73. VI_ATTR_JOB_ID attribute of the I O completion event If you pass VI_NULL as the job d parameter to the viReadAsync operation no jobid will be returned This option may be useful if only one asynchronous operation will be pending at a given time The value VI_NULL is a reserved jobld and has a special meaning in viTerminate If multiple jobs are queued at the same time on the same session an application can use the jobld to distinguish the jobs as they are unique within a session Name Direction Type Description buf OUT ViBuf Represents the location of a buffer to receive data from the device count IN ViUInt32 Number of bytes to be read 264 Chapter 7 VISA Language Reference viReadAsync Name Direction Type Description jobld OUT ViJobId Represents the location of a variable that will be set to the job identifier of this asynchronous read operation vi IN ViSession Unique logical identifier to a session Special value for job d Parameter Value Description VI_NULL Do not return a job identifier Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Asynchronous read operation successfully queued VI_SUCCESS SYNC Read operation performed synchronously Error Codes VI_ERROR_INV_SESSION VI_ERROR
74. VI_ERROR_RSRC_LOCKED The specified operation could not be performed because the resource identifed by vi has been locked for this kind of access VI_ERROR_RSRC_NFOUND The expression specified does not match any device or resource was not found VI_ERROR_SESN_NLOCKED The current session did not have any lock on the resource VI_ERROR_SRQ_NOCCURED A service request has not been received for the session VI_ERROR_SYSTEM_ERROR Unknown system error VI_ERROR_TMO VI_ERROR_TRIG_UNMAPPED The operation failed to complete within the specified timeout period The path from trigSrc to trigDest is not currently mapped VI_ERROR_USER_BUF A specified user buffer is not valid or cannot be accessed for the required size VI_ERROR_WINDOW_MAPPED The specified session already contains a mapped window VI_ERROR_WINDOW_NMAPPED The specified session is not currently mapped Appendix A 335 VISA Library Information VISA Error Codes VISA Error Codes by Function VISA functions are listed in alphabetical order with associated completion and error codes for each function viAssertIntrSignal vi mode status D Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INTR_PENDING An interrupt is still pending from a previous call VI_ERROR_INV_MODE The value specified by th
75. VXI MEMACC Board level register access to the VXI interface GPIB VX11 MEMACC Board level register access to GPIB VXI interface number 1 GPIB2 INTFC Interface or raw resource for GPIB interface 2 Chapter 4 45 Programming with VISA Using Sessions VXI 1 BACKPLANE Mainframe resource for chassis 1 on the default VXI system which is interface 0 GPIB VXI12 Mainframe resource for default chassis on GPIB VXI BACKPLANE interface 2 GPIB1 SERVANT Servant device side resource for GPIB interface 1 VXI0 SERVANT Servant device side resource for VXI interface 0 TCPIPO 1 2 3 4 999 Raw TCPIP access to port 999 at the specified SOCKET address TCPIP devicename TCPIP device using VXI 11 located at the specified company com INSTR address This uses the default LAN Device Name of insto Example Openinga This example shows one way to open a resource session with the GPIB Session device at primary address 23 ViSession defaultRM vi viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB0O 23 INSTR VI NULL VI_NULL amp vi viClose vi viClose defaultRM Closing a Session The viClose function must be used to close each session You can close the specific resource session which will free all data structures that had been allocated for the session If you close the default resource manager session all sessions opened using that resource ma
76. Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_ VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed viWrite Chapter 7 263 Syntax Description Parameters VISA Language Reference viReadAsync viReadAsync viReadAsync ViSession vi ViBuf buf ViUInt32 count ViJobId jobld This function asynchronously transfers data from a device The data that is read is stored in the buffer represented by buf This function normally returns before the transfer terminates An I O Completion event is posted when the transfer is actually completed This function returns job d which you can use either with viTerminate to abort the operation or with an I O Completion event to identify which asynchronous read operation completed Since an asynchronous I O request could complete before the viReadAsync operation returns and the I O completion event can be distinguished based on the job identifier an application must be made aware of the job identifier before the first moment that the I O completion event could possibly occur Setting the output parameter job d before the data transfer even begins ensures that an application can always match the job d parameter with the
77. a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INP_PROT_VIOL Device reported an input protocol error occurred during transfer VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION The given session or object reference is VI_ERROR_INV_OBJECT invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer Chapter 7 309 See Also VISA Language Reference viVxiCommandQuery Error Codes Description VI_ERROR_RAW_RD_PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RESP_PENDING A previous response is still pending causing a multiple query error VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed INSTR Resource Description 310 Chapter 7 Syntax Description VISA Language Reference viWaitOnEvent viWaitOnEvent viWaitOnEvent ViSession vi ViEventType inEvent
78. a resource or session or to set a resource or session to a specified state E Events for communication with applications E Operations functions that can be used for the resource class A summary description of each resource class supported by Agilent VISA follows See Appendix B VISA Resource Classes for a description of the attributes events and operations for each resource class NOTE Although the Servant Device Side SERVANT resource is defined by the VISA specification the SERVANT resource is not supported by Agilent VISA See Appendix B VISA Resource Classes for a description of the SERVANT resource Resource Class Interface Types Resource Class Description Instrument Control INSTR Generic GPIB GPIB VXI Device operations reading writing Serial TCPIP VXI triggering etc GPIB Bus Interface INTFC Generic GPIB Raw GPIB interface operations reading writing triggering etc Memory Access MEMACC Generic GPIB VXI VXI Address space of a memory mapped bus such as the VXlbus Chapter 4 39 Programming with VISA VISA Resources and Attributes Resource Class Interface Types Resource Class Description VXI Mainframe Backplane Generic GPIB VXI VXI VX I defined operations and properties of BACKPLANE GPIB VXI BACKPLANE each backplane or chassis in a VXlbus not supported system Servant Device Side Resource GPIB VXI TCPIP not Operations an
79. abort the operation or with an I O Completion event to identify which asynchronous write operation completed Since an asynchronous I O request could complete before the viWriteAsync operation returns and the I O completion event can be distinguished based on the job identifier an application must be made aware of the job identifier before the first moment that the I O completion event could possibly occur Setting the output parameter jobld before the data transfer even begins ensures that an application can always match the jobld parameter with the VI_ATTR_JOB_ID attribute of the I O completion event If you pass VI_NULL as the job d parameter to the viWriteAsync operation no jobld will be returned The value VI_NULL is a reserved jobld and has a special meaning in viTerminate This option may be useful if only one asynchronous operation will be pending at a given time If multiple jobs are queued at the same time on the same session an application can use the jobld to distinguish the jobs as they are unique within a session Chapter 7 319 VISA Language Reference viWriteAsync Parameters Special value for job d Parameter Name Direction Type Description vi IN ViSession Unique logical identifier to a session buf IN ViBuf Represents the location of a data block to be sent to the device count IN ViUInt32 Specifies number of bytes to be written jobld OUT VidobId Represents the location of a varia
80. access VI_ERROR_TMO Timeout expired before write operation completed 362 Appendix A VISA Library Information VISA Error Codes vivQueryf vi writeFmt readFmt params Codes Description VI_SUCCESS Successfully completed the Query operation VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt or readFmt string is invalid VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_IO Could not perform read write operation because of I O error VI_ERROR_NSUP_FMT The format specifier is not supported for current argument type VI_ERROR_RSRC_LOCKED VI_ERROR_TMO Specified operation could not be performed because the resource identified by vi has been locked for this kind of access Timeout occurred before read write operation completed viVScanf vi readFmt params Codes Description VI_SUCCESS Data were successfully read and formatted into arg parameter s VI_ERROR_ALLOC VI_ERROR_INV_FMT The system could not allocate a formatted I O buffer because of insufficient resources A format specifier in the readFmt string is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_
81. be called when a trigger interrupt occurs Note that you may need to change the address include lt visa h gt finclude lt stdio h gt trigger event handler ViStatus VI_FUNCH myHdlr ViSession vi ViEventType eventType ViEvent ctx ViAddr userHdlLr VilInt16 trigId make sure it is a trigger event if eventType VI_EVENT TRIG Stray event so ignore return VI SUCCESS print the event information printf Trigger Event Occurred n printf Original Device Session ld n vi get the trigger that fired viGetAttribute ctx VI ATTR RECV TRIG ID amp trigId printf Trigger that fired switch trigId case VI_ TRIG TTLO printf TTLO break default printf lt other Ox x gt trigId break Chapter 4 73 Example SRQ Callback Programming with VISA Using Events and Handlers printf n return VI SUCCESS E void main ViSession defaultRM vi open session to VXI device vi0OpenDefaultRM amp defaultRM viOpen defaultRM VXI0 24 INSTR VI NULL VI_NULL amp vi select trigger line TTLO viSetAttribute vi VI_ATTR_TRIG_ID VI_TRIG TTLO install the handler and enable it vilInstallHandler vi VI_EVENT TRIG myHdlr ViAddr 10 viEnableEvent vi VI_EVENT TRIG VI_HNDLR VI_NULL fire trigger line twice viAssertTrigger vi VI_TRIG PROT SYNC viAsse
82. been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed VI_ERROR_RAW_RW_PROT_ VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RAW_ RD PROT_ VIOL Violation of raw read protocol occurred during transfer VI_ERROR_OUTP_PROT_ VIOL Device reported input protocol error during transfer VI_ERROR_BERR VI_ERROR_NCIC Bus error occurred during transfer The interface associated with the given vi is not currently the controller in charge VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_FILE_ACCESS An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights VI_ERROR_FILE_IO Error occurred while accessing the specified file VI_ERROR_CONN_LOST I O connection for a session has been lost viWrite viReadToFile 322 Chapter 7 VISA Library Information 323 VISA Library Information This appendix provides general library information for VISA including VISA Type Definitions VISA Error Codes Numerical VISA Error Codes Alphabetical VISA Error Codes by Function VISA Directories Information Editing VISA Configuration Information 324 Appendix A VISA Library Information VISA Type Definitions
83. calls to viF lush VI_ATTR_FILE_APPEND_EN This attribute specifies whether viReadToFile will overwrite truncate or append when opening a file VI_ATTR_IO_PROT Specifies which protocol to use 422 Appendix B VISA Resource Classes TCPIP Socket SOCKET Resource Attribute Name Description TCPIP SOCKET Resource Attributes VI_ATTR_TCPIP_ADDR This is the TCPIP address of the device to which the session is connected This string is formatted in dot notation VI_ATTR_TCPIP_HOSTNAME Specifies the host name of the device If no host name is available this attribute returns an empty string VI_ATTR_TCPIP_PORT Specifies the port number for a given TCPIP address Fora TCPIP SOCKET resource this is a required part of the address string VI_ATTR_TCPIP_NODELAY The Nagle algorithm is disabled when this attribute is enabled and vice versa The Nagle algorithm improves network performance by buffering send data until a full size packet can be sent This attribute is enabled by default in VISA to verify that synchronous writes get flushed immediately VI_ATTR_TCPIP_KEEPALIVE An application can request that a TCPIP provider enable the use of keep alive packets on TCP connections by turning on this attribute If a connection is dropped as a result of keep alives the error code VI_ERROR_CONN_LOST is returned to current and subsequent I O calls on the session SOCKET Resource Ev
84. character was read VI_SUCCESS MAX CNT The number of bytes read is equal to count Appendix A 337 VISA Library Information VISA Error Codes Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viBufWrite vi buf count retCount r Timeout expired before function completed Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start write operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED VI_ERROR_TMO Specified operation could not be performed because the resource identified by vi has been locked for this kind of access Timeout expired before function completed viClear Vi Codes
85. characters A format specifier sequence should include one and only one format code Standard ANSI C Format Codes Send the ASCII percent character c Argument type A character to be sent d Argument type An integer Modifier Interpretation Default Print integer in NR1 format integer without a decimal point functionality 2 or 3 The integer is converted into a floating point number and output in the correct format field width Minimum field width of the output number Any of the six IEEE 488 2 modifiers can also be specified with field width Length modifier 1 arg is a long integer Length modifier h arg is a short integer array size arg points to an array of integers or long or short integers depending on the length modifier of size array size The elements of this array are separated by array size 1 commas and output in the specified format f Argument type A floating point number Modifier Interpretation Default Print a floating point number in NR2 format a number with functionality at least one digit after the decimal point 1 Print an integer in NR1 format The number is truncated 3 Print a floating point number in NR3 format scientific notation Precision can also be specified field width Minimum field width of the output number Any of the six IEEE 488 2 modifiers can also be specified with field width Length modifier 1 arg is a double flo
86. charge status Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_GPIB_ event CIC VI_ATTR_GPIB_RECV_ Controller has become RO ViBoolean VI_TRUE CIC_STATE controller in charge VI_FALSE VI_EVENT_GPIB_TALK Notification that the GPIB controller has been addressed to talk Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_GPIB_ event TALK VI_EVENT GPIB LISTEN Notification that the GPIB controller has been addressed to listen Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_GPIB_ LISTEN VI_EVENT CLEAR Notification that the GPIB controller has been sent a device clear message Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_CLEAR 66 Chapter 4 VI_EVENT_TRIGGER Notification that a trigger interrupt was received from the interface Programming with VISA Using Events and Handlers Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ TRIG event VI_ATTR_REC
87. expression part of the expr parameter to the viFindRsrc operation viFindRsrc uses a case insensitive compare function when matching resource names against the regular expression specified in expr If the value VI_NULL is specified in the findList parameter of viFindRsrc and the return value is successful VISA automatically invokes viClose on the find list handle rather than returning it to the application The findList and retCnt parameters to the viFindRsrc operation are optional They can be used if only the first match is important and the number of matches is not needed Calling viFindRsrc with VXI INSTR will return the same resources as invoking it with vxi instr All resource strings returned by viFindRsrc must be recognized by viParseRsrc and viOpen However not all resource strings that can be parsed or opened have to be findable Chapter 7 191 Parameters VISA Language Reference viFindRsrc Name Direction Type Description expr IN viString This expression sets the criteria to search an interface or all interfaces for existing devices See the following table for description string format findList OUT ViFindList Returns a handle identifying this search session This handle will be used as an input in viFindNext instrDesc OUT vViRsre Returns a string identifying the location of a device Strings can then be passed to viOpen to establish a session
88. function because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO Unknown I O error occurred during transfer VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW_RD_PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed viRead 318 Chapter 7 Syntax Description VISA Language Reference viWriteAsync viWriteAsync viWriteAsync ViSession vi ViBuf buf ViUInt32 count ViJobId jobld NOTE This function is implemented synchronously in Agilent VISA Write data to device asynchronously This function asynchronously transfers data to a device The data to be written is in the buffer represented by buf This function normally returns before the transfer terminates An I O Completion event is posted when the transfer is actually completed This function returns job d which you can use either with viTerminate to
89. functions to access the data or you can use aC pointer Using a de referenced C pointer will allow faster access to data Chapter 5 123 Programming via GPIB and VXI Using VXI Specific Attributes Example This example shows how you can read the VI_LATTR_WIN_ACCESS Determining attribute and use the result to determine how to access memory Window Mapping ViAddr address ViUInt16 access ViUInt1l6 value viMapAddress vi VI_Al16 SPACE 0x00 0x04 VI_ FALSI VI_NULL amp address viGetAttribute vi VI_ATTR WIN ACCESS amp access Gl If access VI_ USE OPERS viPeek16 vi ViAddr ViUInt16 address 4 sizeof ViUInt16 amp value else if access VI_DEREF ADDR value ViUInt16 address 4 sizeof ViUInt16 else if access VI_NMAPPED return error 124 Chapter 5 Programming via GPIB and VXI Using VXI Specific Attributes Setting the VXI Trigger Line The VI_ATTR_TRIG_ID attribute is used to set the VXI trigger line This attribute is listed under generic attributes and defaults to VI_LTRIG_SW software trigger To set one of the VXI trigger lines set the VI_ATTR_TRIG_ID attribute as follows viSetAttribute vwi VIL_ATTR_TRIG_ID VI_LTRIG_TTLO The above function sets the VXI trigger line to TTL trigger line 0 VI_TRIG TTLO The following are valid VXI trigger lines Panel In is an Agilent extension of the VISA specification VX
90. g it matches the character instead of any one character list Matches any one character from the enclosed list A hyphen can be used to match a range of characters list Matches any character not in the enclosed list A hyphen can be used to match a range of characters Matches 0 or more occurrences of the preceding character or expression Matches 1 or more occurrences of the preceding character or expression exp exp Matches either the preceding or following expression The or operator matches the entire expression that precedes or follows it and not just the character that precedes or follows it For example VXI GPIB means VXI GPIB not VXI I G PIB 54 Chapter 4 Programming with VISA Sending I O Commands Special Description Characters and Operators exp Grouping characters or expressions My Sends a blank space n Sends the ASCII line feed character The END identifier will also be sent r Sends an ASCII carriage return character t Sends an ASCII TAB character Sends ASCII character specified by octal value Sends the ASCII double quote character Sends a backslash character Example Expression Sample Matches GPIB INSTR Matches GPIBO 2 INSTR GPIB1 1 1 INSTR and GPIB VXI1 8 INSTR GPIB 0 9 INSTR Matches GPIBO 2 INSTR and GPIB1 1 1 INSTR but not GPIB VX
91. installed handlers for the specified event Applications can specify a value in the userHandle parameter that is passed to the handler on its invocation VISA identifies handlers uniquely using the handler reference and the userHandle value NOTE Versions of VISA prior to Version 2 0 allow only a single handler per event type per session Parameters Name Direction Type Description eventType IN ViEventType Logical event identifier handler IN ViHndlr Interpreted as a valid reference to a handler to be installed by an application userHandle IN ViAddr A value specified by an application that can be used for identifying handlers uniquely for an event type vi IN vViSession Unique logical identifier to a session The following events can be enabled Event Name Description VI_EVENT_IO_ COMPLETION Notification that an asynchronous operation has completed VI_EVENT_SERVICE_REQ Notification that a device is requesting service 210 Chapter 7 Return Values See Also VISA Language Reference vilnstallHandler Event Name Description VI_EVENT_TRIG Notification that a hardware trigger was received from a device VI_EVENT_VXI_SIGP Notification that a VXI signal or VXI interrupt has been received from a device Type viStatus This is the function return status It returns either a completion code or an error code as follows Completi
92. is not currently the controller in charge Chapter 7 269 See Also VISA Language Reference viReadToFile Error Codes Description VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer VI_ERROR_RAW_RD_ PROT_ VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_ VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed viRead viWriteFromFile 270 Chapter 7 Syntax Description VISA Language Reference viScanf viScanf viScanf ViSession vi ViString readFmt arg1 arg2 This operation receives data from a device formats it by using the format string and stores the data in the arg parameter list The format string can have format specifier sequences white space characters and ordinary characters VISA functions that take a variable number of parameters e g viPrintf viScanf and viQueryf are not callable from Visual Basic Use the corresponding vivPrint f viVScanf and vivQueryf functions instead The whi
93. it to the application The outEventType and outContext parameters to the viWaitOnEvent operation are optional They can be used if the event type is known from the inEventType parameter or if the eventContext is not needed to retrieve additional information Chapter 7 311 VISA Language Reference viWaitOnEvent NOTE Since system resources are used when waiting for events viWaitOnEvent the viClose function must be called to free up event contexts outContext This table lists events and associated read only attributes implemented by Agilent VISA that can be read to get event information on a specific event Use the viReadSTB function to read the status byte of the service request Instrument Control INSTR Resource Events Event Name Attributes Data Type Range VI_EVENT_SERVICE_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_SERVICE__ REQUEST REQ VI_EVENT_VXI_SIGP VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_STOP VI_ATTR_SIGP_STATUS ID ViUInt16 0 to FFFFh VI_EVENT_TRIG VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIG VI_ATTR_RECV_TRIG_ID VilInt16 VI_TRIG TTLO to VI_TRIG_ TTL7 VI_TRIG ECLO to VI_TRIG_ECL1 VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET COUNT viUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A 312 Chapter 7 VISA Language Reference
94. method Callback Method Installing Handlers ViStatus VI_FUNCH my handler ViSession vi ViEventType eventType ViEvent context ViAddr usrHandle your event handling code here return VI SUCCESS main ViSession vi ViAddr addr 0 E vilInstallHandler vi VI_EVENT SERVICE REQ my handler addr viEnableEvent vi VI_EVENT SERVICE REQ VI_HNDLR VI_NULL your code here viDisableEvent vi VI_EVENT SERVICE REQ VI _HNDLR viUninstallHandler vi VI_EVENT SERVICE REQ my handler addr VISA allows applications to install multiple handlers for for an event type on the same session Multiple handlers can be installed through multiple invocations of the viInstallHandler operation where each invocation adds to the previous list of handlers If more than one handler is installed for an event type each of the handlers is invoked on every occurrence of the specified event s VISA specifies that the handlers are invoked in Last In First Out LIFO order Use the following function when installing an event handler vilnstallHandler vi eventType handler userHandle Where the parameters are defined as follows 70 Chapter 4 Example Installing an Event Handler Writing the Handler Programming with VISA Using Events and Handlers Parameter Description vi Th
95. reads an associated attribute and performs some sort of action See the event handler in the example program later in this section Chapter 4 71 Enabling Events Programming with VISA Using Events and Handlers Before an event can be delivered it must be enabled using the viEnableEvent function This function causes the application to be notified when the enabled event has occurred Where the parameters are viEnableEvent vi eventType mechanism context Using VI_QUEUE in the mechanism parameter specifies a queuing method for the events to be handled If you use both VI_QUEUE and one of the mechanisms listed above notification of events will be sent to both locations See the next subsection for information on the queuing method Parameter Description vi The session on which the handler will be installed eventType The type of event to enable mechanism The mechanism by which the event will be enabled It can be enabled in several different ways You can use VI_HNDLR in this parameter to specify that the installed handler will be called when the event occurs Use VI_SUSPEND_HNDLR in this parameter which puts the events in a queue and waits to call the installed handlers until viEnableEvent is called with VI_HNDIR specified in the mechanism parameter When viEnableEvent is called with VI HNDLR specified the handler for each queued event will be called context Not used in VISA 1 0 Use VI_NULL
96. recommended implementation of viParseRsrc will return information determined solely from the resource string and any static configuration information e g INI files or the Registry Name Direction Type Description intfNum OUT VIUInt16 Board number of the interface of the given resource string intfType OUT VIUInt16 Interface type of the given resource string rsrcName IN viRsre Unique symbolic name of a resource 246 Chapter 7 Return Values See Also VISA Language Reference viParseRsrc Name Direction Type Description sesn IN ViSession Resource Manager session should always be the Default Resource Manager for VISA returned from viOpenDefaultRM Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Resource string is valid Error Codes Description VI_ERROR_ALLOC VI_ERROR_INTF_NUM_ NCONFIG Insufficient system resources to parse the string The interface type is valid but the specified interface number is not configured VI_ERROR_INV_RSRC_NAME Invalid resource reference specified Parsing error VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_LIBRARY_NFOUND The given session or object reference is invalid both are the same value A code library required by VISA could not be located
97. return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge Chapter 7 169 VISA Language Reference viClear Error Codes Description VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW_RD_ PROT VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW_WR_PROT VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed 170 Chapter 7 Syntax Description Parameters Return Values VISA Language
98. s Corresponding argument is a pointer to a null terminated string Sends an ASCII percent character oO u X X Corresponding argument is an unsigned integer e E g G Corresponding argument is a double n Corresponding argument is a pointer to an integer b B Corresponding argument is the location of a block of data viPrintf viVPrintf and viQueryf viVqueryf readFmt d i n Corresponding argument must be a pointer to an integer e f g Corresponding argument must be a pointer to a float c Corresponding argument is a pointer to a character sequence s t T Corresponding argument is a pointer to a string 0 uU X Corresponding argument must be a pointer to an unsigned integer 56 Chapter 4 Programming with VISA Sending I O Commands Format Codes Description Corresponding argument must be a character pointer b Corresponding argument is a pointer to a data array Example Receiving This example receives data from the session specified by the vi parameter Data From a Session Formatted I O Buffers and converts the data to a string char data 180 viScanf vi St data The VISA software maintains both a read and write buffer for formatted I O operations Occasionally you may want to control the actions of these buffers You can modify the size of the buffer using the viSetBuf function See Chapter 7 VISA Language Reference for more information on this function
99. section describes VISA Error Codes in three categories E VISA Error Codes Numerical E VISA Error Codes Alphabetical E VISA Error Codes by Function VISA Error Codes Numerical This table lists VISA completion and error codes in numerical order for hex and decimal error values Hex Decimal VISA Status Code Success Codes 3FFFO002 1073676290 VI_SUCCESS EVENT_EN 3FFFO003 1073676291 VI_SUCCESS EVENT DIS 3FFFO004 1073676292 VI_SUCCESS QUEUE_EMPTY 3FFFO005 1073676293 VI_SUCCESS TERM CHAR 3FFFO006 1073676294 VI_SUCCESS MAX CNT 3FFFO07D 1073676413 VI_SUCCESS DEV _NPRESENT 3FFFOO7E 1073676414 VI_SUCCESS TRIG MAPPED 3FFFO080 1073676416 VI_SUCCESS QUEUE_NEMPTY 3FFFO098 1073676440 VI_SUCCESS NCHAIN 3FFFO099 1073676441 VI_SUCCESS NESTED SHARED 3FFFOO9A 1073676442 VI_SUCCESS NESTED EXCLUSIVE 3FFFO09B 1073676443 VI_SUCCESS SYNC Warning Codes 3FFFO077 1073676407 VI_WARN_CONFIG_ NLOADED 3FFFO0082 1073676418 VI_WARN_NULL_OBJECT 3FFF0084 1073676420 VI_WARN_NSUP_ATTR_STATE 3FFF0085 1073676421 VI_WARN_UNKNOWN_STATUS 3FFF0088 1073676424 VI_WARN_NSUP_BUF 328 Appendix A VISA Library Information VISA Error Codes Hex Decimal VISA Status Code Error Codes BFFF0000 1073807360 VI_ERROR_SYSTEM_ERROR BFFFOOOE 1073807346 VI_ERROR_INV_OBJECT BFFFOOOF 1073807345 VI_ERROR_RSRC_LOCKED BFFF0010 1
100. so other processes and threads can use it viUnlock vi Print results printf Instrument identification string s n buf Close session viClose vi viClose defaultRM Chapter 4 89 Example Shared Lock Programming with VISA Using Locks This example shows a session gaining a shared lock with the accessKey called lockkey Other sessions can now use this accessKey in the requestedKey parameter of the viLock function to share access on the locked resource This example then shows the original session acquiring an exclusive lock while maintaining its shared lock When the session holding the exclusive lock unlocks the resource via the viUnlock function all the sessions sharing the lock again have all the access privileges associated with the shared lock lockshr c This example program queries a GPIB device for an identification string and prints the results Note that you must change the address finclude lt visa h gt include lt stdio h gt void main ViSession defaultRM vi char buf 256 0 char lockkey 256 0 Open session to GPIB device at address 22 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIBO 22 INSTR VI_NULL VI_NULL amp vi acquire a shared lock so only this process and processes that we know about can access this resource viLock vi VI SHARED LOCK 2000 VI NULL lockkey at this time we can make lockkey a
101. sole control over another device as with the VXI Commander Servant hierarchy communication channel The same as Session A communication path between a software element and a resource Every communication channel in VISA is unique 426 Glossary controller A device such as a computer used to communicate with a remote device such as an instrument In the communications between the controller and the device the controller is in charge of and controls the flow of communication that is the controller does the addressing and or other bus management device An entity that receives commands from a controller A device can be an instrument a computer acting in a non controller role or a peripheral such as a plotter or printer In VISA the concept of a device is generally the logical association of several VISA resources device driver A segment of software code that communicates with a device It may either communicate directly with a device by reading to and writing from registers or it may communicate through an interface driver device session A session that communicates as a controller specifically with a single device such as an instrument handler A software routine used to respond to an asynchronous event such as an SRQ or an interrupt instrument A device that accepts some form of stimulus to perform a designated task test or measurement function Two common forms of stimuli are message passing and register re
102. specified for the queuing mechanism and VI_SUSPEND_HNDLR is specified for the pending events in the callback mechanism It is possible to specify both mechanisms simultaneously by specifying VI_ALL MECH vi IN ViSession Unique logical identifier to a session 176 Chapter 7 VISA Language Reference viDiscardEvents Special Value for eventType Parameter Value Action Description VI_ALL_ENABLED_EVENTS Discard events of every type that is enabled The following events can be discarded Event Name Description VI_EVENT_IO_ COMPLETION Notification that an asynchronous operation has completed VI_EVENT_SERVICE_REQ Notification that a device is requesting service VI_EVENT_TRIG Notification that a hardware trigger was received from a device VI_EVENT_VXI_SIGP Notification that a VXI signal or VXI interrupt has been received from a device Special Values for mechanism Parameter Value Action Description VI_ALL MECH VI_QUEUE Discard the specified event s from all mechanisms Discard the specified event s from the waiting queue VI_SUSPEND_HNDLR Discard the specified event s from the callback queue Chapter 7 177 VISA Language Reference viDiscardEvents Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows
103. still get attributes E Shared Lock A session can share a lock on a VISA resource with other sessions by using the lock type VI_SHARED LOCK Shared locks in VISA are similar to exclusive locks in terms of access privileges but can still be shared between multiple sessions If a session has a shared lock other sessions that share the lock can also modify global attributes and invoke operations on the resource of course unless some other session has a previous exclusive lock on that resource A session that does not share the lock will lack these capabilities Locking a resource restricts access from other sessions and in the case where an exclusive lock is acquired ensures that operations do not fail because other sessions have acquired a lock on that resource Thus locking a resource prevents other subsequent sessions from acquiring an exclusive lock on that resource Yet when multiple sessions have acquired a shared lock VISA allows one of the sessions to acquire an exclusive lock along with the shared lock it is holding Also VISA supports nested locking That is a session can lock the same VISA resource multiple times for the same lock type via multiple invocations of the viLock function In such a case unlocking the resource requires an equal number of invocations of the viUnlock function Nested locking is also explained in detail later in this section Some VISA operations may be permitted even when there is an exclusi
104. swapped and padded into standard IEEE 488 2 big endian format if native computer representation is different Length The data block is assumed to be an array of unsigned long modifier 1 integers The count corresponds to the number of longwords 32 bits Each longword data is swapped and padded into standard IEEE 488 2 big endian format if native computer representation is different Chapter 7 255 VISA Language Reference viPrintf Flag or Interpretation Modifier Length The data block is assumed to be an array of floats The count modifier z corresponds to the number of floating point numbers 32 bits The numbers are represented in IEEE 754 big endian format if native computer representation is different Length The data block is assumed to be an array of doubles The count modifier Z corresponds to the number of double floats 64 bits The numbers are represented in IEEE 754 big endian format if native computer representation is different B Argument type A location of a block of data The functionality is similar to b except the data block is sent as an IEEE 488 2 lt INDEFINITE LENGTH ARBITRARY BLOCK RESPONSE DATA gt This format involves sending an ASCII LF character with the END indicator set after the last byte of the block y Argument Type A location of block binary data Flag or Modifier Interpretation Default The data block is sent as raw binary data A count long funct
105. the same value VI_ERROR_LINE_IN_ USE One of the specified lines trigSrc or trigDest is currently in use VI_ERROR_NSUP_LINE One of the specified lines trigSrc or trigDest is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed See Also BACKPLANE Resource Description 220 Chapter 7 Syntax Description Parameters Return Values VISA Language Reference viMemAlloc viMemAlloc viMemAlloc ViSession vi ViBusSize size ViBusAddress offset NOTE This function is not implemented in Agilent VISA This function returns an offset into a device s memory region that has been allocated for use by this session If the device to which the given vi refers is located on the local interface card the memory can be allocated either on the device itself or on the computer s system memory The offset returned from the viMemAl1loc operation is the offset address relative to the device s allocated address base for whichever address space into which the given device exports memory Name _ Direction Type Description offset OUT ViBusAddress Returns the offset of the allocated device memory size IN ViBusSize Specifies the size of the all
106. trigDest vi ViInt16 trigSrc This operation can be used to map one trigger line to another This operation is valid only on VXI Backplane BACKPLANE sessions This operation unmaps only one trigger mapping per call If viMapTrigger was Called multiple times on the same BACKPLANE resource and created multiple mappings for either trigSrc or trigDest trigger mappings other than the one specified by trigSrc and trigDest remain in effect after this call completes Name Direction Type Description trigDest IN ViInt16 Destination line used in previous map trigSrc IN ViInt16 Source line used in previous map vi IN ViSession Unique logical identifier to a session Special Value for trgSrc Parameter Value VI_TRIG_ECLO VI_TRIG_ECL1 Action Description Unmap the specified VXI ECL trigger line VI_TRIG_PANEL_IN Unmap the controller s front panel trigger input line VI_TRIG_PANEL OUT Unmap the controller s front panel trigger output line VI_TRIG TTLO VI_TRIG TTL7 Unmap the specified VXI TTL trigger line 296 Chapter 7 VISA Language Reference viUnmapTrigger Special Values for trigDest Parameter Value Action Description VI_TRIG_ ALL Unmap all trigger lines to which trigSrc is currently connected VI_TRIG ECLO VI_TRIG ECL1 Unmap the specified VXI ECL trigger line VI_TRIG_PANEL_IN Unmap the controller s front panel trigger in
107. vi0OpenDefaultRM sesn viOpen sesn rsrcName accessMode timeout vi The session returned from viOpenDefaultRM must be used in the sesn parameter of the viOpen function The viOpen function then uses that session and the resource address specified in the rsrcName parameter to open a resource session The vi parameter in viOpen returns a session identifier that can be used with other VISA functions Your program may have several sessions open at the same time by creating multiple session identifiers by calling the viOpen function multiple times The following table summarizes the parameters in the previous function calls Parameter Description sesn A session returned from the viOpenDefaultRM function that identifies the resource manager session rsrcName A unique symbolic name of the resource resource address 42 Chapter 4 Programming with VISA Using Sessions Parameter Description accessMode Specifies the modes by which the resource is to be accessed The value VI_EXCLUSIVE_LOCK is used to acquire an exclusive lock immediately upon opening a session If a lock cannot be acquired the session is closed and an error is returned The VI_LOAD_ CONFIG value is used to configure attributes specified by some external configuration utility If this value is not used the session uses the default values provided by this specification Multiple access modes can be used simultaneously by specifying a bit wis
108. viIn8 vi space offset val8 Reads 8 bits of data from the specified offset viIn16 vi space offset vall6 Reads 16 bits of data from the specified offset viIn32 vi space offset val32 Reads 32 bits of data from the specified offset viouts vi space offset val8 Writes 8 bits of data to the specified offset viOut16 vi space offset vall Writes 16 bits of data to the specified offset vidut32 vi space offset val32 Writes 32 bits of data to the specified offset viMoveIn8 vi space offset length buf8 Moves an 8 bit block of data from the specified offset to local memory 102 Chapter 5 Programming via GPIB and VXI Using High Level Memory Functions Function Description viMovelIn16 vi space offset length buf16 Moves a 16 bit block of data from the specified offset to local memory viMoveIn32 vi space offset length buf32 Moves a 32 bit block of data from the specified offset to local memory viMoveouts vi space offset length buf8 Moves an 8 bit block of data from local memory to the specified offset viMoveOut16 vi space offset length buf16 Moves a 16 bit block of data from local memory to the specified offset viMoveOut32 vi space offset length buf32 Moves a 32 bit block of data from local memory to the specified offset Using viIn and viOut When using the viIn and viOut high level me
109. viPoke32 249 viPoke8 249 viPrintf 250 viQueryf 259 viRead 261 viReadAsync 264 viReadSTB 266 viReadToFile 268 viScanf 271 viSetAttribute 281 viSetBuf 283 viSPrintf 285 viSScanf 287 viStatusDesc 289 viTerminate 290 viUninstallHandler 292 viUnlock 294 viUnmapAddress 295 viUnmapTrigger 296 viVPrintf 298 viVQueryf 300 viVScanf 302 viVSPrintf 304 viVSScanf 306 viVxiCommandQuery 308 viWaitOnEvent 311 viWrite 317 viWriteAsync 319 viWriteFromFile 321 Index G Glossary 426 GPIB Bus Interface resource 402 GPIB interface overview 96 GPIB VXI attributes 123 high level memory functions 102 low level memory functions 107 mapping memory space 108 overview 100 register programming 102 107 setting trigger lines 125 writing to registers 109 H handlers 62 event 71 installing 70 prototype 71 hardware triggers and events 62 header file visa h 41 help HyperHelp on HP UX 36 man pages on HP UX 36 high level memory functions 102 HP UX compiling 35 directory structure 369 linking 35 logging messages 35 online help 36 HyperHelp on HP UX 36 installing handlers 70 INSTR resource class 377 Instrument Control resource 377 interrupts and events 62 INTFC resource class 402 introducing IO Libraries 12 IO interface definition 95 IO Libraries introducing 12 IP address 135 433 L LAN client server 129 GPIB device comm 141 hardware architecture 1
110. writeFmt arg1 arg2 viSScanf vi buf readFmt arg1 arg2 viVPrintf vi writeFmt params viVScanf vi readFmt params viVSPrintf vi buf writeFmt params vivSScanf vi buf readFmt params viWrite vi buf count retCount viWriteAsync vi buf count jobld viWriteFromFile vi filename count retCount 424 Appendix B Glossary 425 Glossary address A string or other language construct that uniquely locates and identifies a resource VISA defines an ASCll based grammar that associates strings with particular physical devices or interfaces and VISA resources ADE Application Development Environment API Application Programmers Interface The direct interface that an end user sees when creating an application The VISA API consists of the sum of all of the operations attributes and events of each of the VISA Resource Classes attribute A value within a resource that reflects a characteristic of the operational state of a resource The operational state of some attributes can be changed bus error An error that signals failed access to an address Bus errors occur with low level accesses to memory and usually involve hardware with bus mapping capabilities For example non existent memory a non existent register or an incorrect device access can cause a bus error commander A device that has the ability to control another device This term can also denote the unique device that has
111. 073807344 VI_ERROR_INV_EXPR BFFF0011 1073807343 VI_ERROR_RSRC_NFOUND BFFF0012 1073807342 VI_ERROR_INV_RSRC_NAME BFFF0013 1073807341 VI_ERROR_INV_ACC_MODE BFFF0015 1073807339 VI_ERROR_TMO BFFF0016 1073807338 VI_ERROR_CLOSING FAILED BFFF001B 1073807333 VI_ERROR_INV_DEGREE BFFF001C 1073807332 VI_ERROR_INV_JOB_ID BFFF001D 1073807331 VI_ERROR_NSUP_ATTR BFFFOO1E 1073807330 VI_ERROR_NSUP_ATTR_STATE BFFFOO1F 1073807329 VI_ERROR_ATTR_READONLY BFFF0020 1073807328 VI_ERROR_INV_LOCK_TYPE BFFFO0021 1073807327 VI_ERROR_INV_ACCESS_KEY BFFF0026 1073807322 VI_ERROR_INV_EVENT BFFF0027 1073807321 VI_ERROR_INV_MECH BFFF0028 1073807320 VI_ERROR_HNDLR_NINSTALLED BFFF0029 1073807319 VI_ERROR_INV_HNDLR_REF BFFF002A 1073807318 VI_ERROR_INV_CONTEXT BFFF002F 1073807313 VI_ERROR_NENABLED BFFF0030 1073807312 VI_ERROR_ABORT BFFF0034 1073807308 VI_ERROR_RAW_WR_PROT_VIOL BFFF0035 1073807307 VI_ERROR_RAW_RD_PROT_VIOL BFFF0036 1073807306 VI_ERROR_OUTP_PROT_VIOL BFFF0037 1073807305 VI_ERROR_INP_PROT_VIOL BFFF0038 1073807304 VI_ERROR_BERR BFFFO03A 1073807302 VI_ERROR_INV_SETUP BFFF003B 1073807301 VI_ERROR_QUEUE_ERROR BFFF003C 1073807300 VI_ERROR_ALLOC BFFF003D 1073807299 VI_ERROR_INV_MASK Appendix A 329 VISA Library Information VISA Error Codes Hex Decimal VISA Status Code BFFFOO3E 1073807298 VI_ERROR_IO BFFFOO3F 1073807297 VI_ERROR_INV_FMT BF
112. 16 Performs a 16 bit D16 transfer VI_WIDTH_32 Performs a 32 bit D32 transfer Since an asynchronous I O request could complete before the viMoveAsync operation returns and the I O completion event can be distinguished based on the job identifier an application must be made aware of the job identifier before the first moment that the I O completion event could possibly occur Setting the output parameter job d before the data transfer even begins ensures that an application can always match the jobld parameter with the VI_ATTR_JOB_ID attribute of the I O completion event If you pass VI_NULL as the job d parameter to the viMoveAsync operation no job d will be returned This option may be useful if only one asynchronous operation will be pending at a given time If multiple jobs are queued at the same time on the same session an application can use the jobld to distinguish the jobs as they are unique within a session The value VI_NULL is a reserved job d and has a special meaning in viTerminate The status code VI_ERROR_RSRC_LOCKED can be returned either immediately or from the VI_EVENT_IO_ COMPLETION event If srcSpace is not VI_LOCAL_SPACE srcOffset is a relative address of the device associated with the given INSTR resource Similarly if destspace is not VI_LOCAL_SPACE destOffset is a relative address of the device associated with the given INSTR resource Name Direction Type Description destOffset IN ViBu
113. 29 interfaces overview 129 LAN Client 129 133 LAN Server 129 140 signal handling 145 software architecture 131 timeout values 143 timeouts 143 VISA LAN Client 136 libraries 19 linking in HP UX 35 linking to VISA libraries 19 locks using 87 logging error messages 29 low level memory functions 107 man pages on HP UX 36 MEMACC attribute descriptions 120 resource class 117 395 memory functions 102 107 memory I O performance 112 memory I O services 117 memory mapping 108 memory space unmapping 109 Message Viewer using 29 N non formatted I O 59 O online help HP UX 36 opening sessions 41 434 P printing history 10 Q queuing and events 62 77 R raw I O 59 register programming high level memory 102 low level memory 107 mapping memory space 108 resource classes 39 375 resource manager session 41 resources finding 47 GPIB Bus Interface 402 Instrument Control 377 locking 87 MEMACC 117 Memory Access 395 Servant Device Side 413 TCPIP Socket 420 VXI Mainframe Backplane 409 restricted rights 9 S searching for resources 47 SERVANT resource class 413 sessions device 42 opening 41 resource manager 41 SICL LAN protocol 132 signal handling with LAN 145 SOCKET resource class 420 special characters 53 SRQs 62 starting the resource manager 41 Index y TCP IP instrument protocol 132 TCPIP Socket resource 420 telephone numbers Agile
114. 3 435 V continued viSPrintf 285 viSScanf 287 viStatusDesc 289 viTerminate 290 viUninstallHandler 292 viUnlock 294 viUnmapAddress 295 viUnmapTrigger 296 viVPrintf 298 viVQueryf 300 viVScanf 302 viVSPrintf 304 viVSScanf 306 viVxiCommandQuery 308 viWaitOnEvent 311 viWrite 317 viWriteAsync 319 viWriteFromFile 321 VXI attributes 123 device types 95 high level memory 102 interface overview 98 low level memory 107 mapping memory space 108 MF Backplane resource 409 performance 112 register programming 102 107 setting trigger lines 125 writing to registers 109 VXI 11 protocol 132 W wait on event 78 warranty 9 web site Agilent 16 windows building applications 19 building DLLs 19 linking to VISA libraries 19 writing to VXI registers 109 436 Index
115. 4 Appendix B VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description Generic INSTR Resource Attributes continued VI_ATTR_WR_BUF_OPER_MODE Determines the operational mode of the write buffer When the operational mode is set to VI_FLUSH_WHEN FULL default the buffer is flushed when an END indicator is written to the buffer or when the buffer fills up If the operational mode is set to VI_FLUSH_ON_ACCESS the write buffer is flushed under the same conditions and also every time a viPrintf operation completes VI_ATTR_DMA_ALLOW_EN VI_ATTR_FILE_APPEND_EN This attribute specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE In some implementations this attribute may have global effects even though it is documented to be a local attribute Since this affects performance and not functionality that behavior is acceptable This attribute specifies whether viReadToFile will overwrite truncate or append when opening a file GPIB and GPIB VXI Specific INSTR Resource Attributes VI_ATTR_GPIB_PRIMARY_ ADDR Primary address of the GPIB device used by the given session VI_ATTR_GPIB_SECONDARY_ADDR Secondary address of the GPIB device used by the given session VI_ATTR_GPIB_READDR_EN This attribute specifies whether to use repeat addressing before each read or write operation VI_ATTR_GPIB_UNADDR_EN This attribute specifi
116. 5 INSTR Open IO path to LAN instrument at address 5 viOpen GPIB2 3 INSTR Open IO path to LAN instrument at address 3 i Cannot talk to instrument3 E Chapter 6 139 Example LAN Server Interface Programming via LAN LAN Interfaces Overview LAN Server Interface Overview This section provides an example of the LAN Server interface configuration and shows applicable VISA viOpen commands See Chapter 7 VISA Language Reference for details on the VISA commands The LAN Server interface system in the following figure consists of a Windows PC acting as a LAN client a second PC acting as a LAN server and a GPIB instrument The IO Config utility has been used to assign the LAN card a VISA name of TCPIPO Also the GPIB card in the LAN server PC has been assigned VISA name of GPIBO The LAN server PC has been assigned a name of machine2 Since unique names have been assigned by IO Config you can now use the VISA viOpen command to open the I O paths to the GPIB instruments as we Interface VISA Names Windows PC Windows PC GPIB Instrument LAN Client LAN Server machine2 SICL name VISA Name H LAN Card TCPIPO ee el GPIB Card GPIBO LAN Card GPIB Card 5 ES LAN GPIB VISA Addressing viOpen TCPIPO machine2 hpib7 5 INSTR Open lO path to GPIB instrument at address 5 J shown in the figure LAN Server PC as Server
117. 6 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global ViUInt16 VI_INTF_VXI N A VI_INTF_GPIB_VXI VI_ATTR_INTF_INST_ RO Global ViString N A N A NAME VI_ATTR_TMO VALUE RW Local ViUInt32 VI_TMO_ IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO INFINITE VXI and GPIB VXI Specific BACKPLANE Resource Attributes VI_ATTR_TRIG ID RW Local ViInt16 VI_TRIG TTLO to N A VI_TRIG_TTL7 VI_TRIG_ECLO to VI_TRIG_ECL1 VI_ATTR_MAINFRAME_ RO Global viInt16 0 to 255 N A LA VI_UNKNOWN_LA VI_ATTR_VXI_VME_ RO Global viInt16 VI_STATE_ ASSERTED N A SYSFAIL STATE VI_STATE_UNASSERTED VI_STATE_UNKNOWN VI_ATTR_VXI_VME_ RO Global ViUInt16 N A N A INTR_STATUS VI_ATTR_VXI_TRIG_ RO Global viUInt32 N A N A STATUS VI_ATTR_VXI_TRIG_ RO Global viUInt32 N A N A SUPPORT 410 Appendix B VISA Resource Classes VXI Mainframe Backplane BACKPLANE Resource BACKPLANE Resource Attribute Descriptions Attribute Name Description Generic BACKPLANE Resource Attributes VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_TMO_VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism VXI and GPIB VXI Specific BACKPLAN
118. A you must install and configure VISA on your computer See Agilent IO Libraries Installation and Configuration Guide for Windows for installation on Windows systems See Agilent IO Libraries Installation and Configuration for HP UX for installation on HP UX systems This guide shows programming techniques using C C and Visual Basic Since VISA and SICL are different libraries using VISA functions and SICL functions in the same I O application is not supported Unless indicated Windows NT refers to Windows NT 4 0 12 Introduction Introduction What s in This Guide What s in This Guide Chapter 1 Introduction describes the contents of this guide provides an overview of VISA and shows how to contact Agilent Technologies Chapter 2 Building a VISA Application in Windows describes how to build a VISA application in a Windows environment An example program is provided to help you get started programming with VISA Chapter 3 Building a VISA Application in HP UX describes how to build a VISA application in the HP UX environment An example program is provided to help you get started programming with VISA Chapter 4 Programming with VISA describes the basics of VISA and lists some example programs The chapter also includes information on creating sessions using formatted I O events etc Chapter 5 Programming via GPIB and VXI gives guidelines to use VISA to communicate over the GPIB GPIB VXI and VXI interfa
119. AC_STATE This attribute shows the current state of the GPIB NDAC Not Data ACcepted interface line Appendix B 405 VISA Resource Classes GPIB Bus Interface INTFC Resource Attribute Name Description GPIB Specific INTFC Resource Attributes continued VI_ATTR_GPIB_SRQ_ STATE This attribute shows the current state of the GPIB SRQ Service ReQuest interface line VI_ATTR_GPIB_CIC_STATE This attribute shows whether the specified GPIB interface is currently CIC controller in charge VI_ATTR GPIB SYS _CNTRL_ STATE This attribute shows whether the specified GPIB interface is currently the system controller In some implementations this attribute may be modified only through a configuration utility On these systems this attribute is read only RO VI_ATTR_ GPIB _HS488 CBL_LEN VI_ATTR_GPIB_ADDR_STATE This attribute specifies the total number of meters of GPIB cable used in the specified GPIB interface If HS488 is not implemented querying this attribute should return the value VI_GPIB_HS488 NIMPL On these systems trying to set this attribute value will return error VI_LERROR_NSUP_ATTR_STATE This attribute shows whether the specified GPIB interface is currently addressed to talk or listen or is not addressed INTFC Resource Events This resource defines the following events for communication with applications where AP Access Privilege VI_EVENT_GPIB_CIC Not
120. Agilent VISA User s Guide EE Agilent Technologies Manual Part Number E2090 90040 Printed in U S A E0801 Contents Agilent VISA User s Guide PRUE RAGS E E A E E E antec essa E E T 9 MOIDE siiip aa A A 9 wWananiy Mioma osons Peer ere P ees errr eet tre rPesr tree Pere 9 U S Government Restricted Rights cccessscccceeessneceeeenaneces 9 Trademark NOMAN ciiseiuscccssinsacuevvenesaguisisammnesseanctesesaeuinve 10 Pontina PISTON nacenan E 10 Copyrnght MormatiOn sii setccadtrsesasacssitiesaaii einai iniii 10 DOCG Oi sunn A 11 Wals in This GUJE eanna aa 13 or O ON sisal co ae le eds ol al 14 Ushio VAAI ke e Meemeeeeene ete trrrcerere ter nrere rer tr ere serene rrr 14 VISA SS DOME sionen ANR 15 VISA D cumematloN secscssrana nR 16 HIS CU AJIN sarosa A 16 2 Building a VISA Application in Windows ccccccseeeeesseeeeeeeeeeeee 17 Building a VISA Program C C cicsiscscisiserscsrieverssciramrasssavnnnces 19 Compiling and Linking VISA Programs C C L 19 Example VISA Program C C seccciiisseaanavesssacarwesieacnteesvens 21 Building a VISA Program Visual Basic 0 ccceeeeeeeeeeeentees 23 Visual Basic Programming Considerations ceee 23 Example VISA Program Visual Basic ecceeeeeeeeeeeeeeee 25 Logging Error Messages sisisi a 29 Using the Event Viewer 6 ceiussccecoots inane wilssaseswoussaaaenusaatecwdtiie 29 Using the Message Viewer w cccccsienscsesnsccsstsonse
121. Async function asynchronously reads raw data from the session specified by the vi parameter and stores the results in the location where bufis pointing This operation normally returns before the transfer terminates Thus the operation returns jobId which you can use with either viTerminate to abort the operation or with an I O completion event to identify which asynchronous read operation completed viReadAsync vi buf count jobld Chapter 4 59 Programming with VISA Sending I O Commands E viWriteAsync The viWriteAsync function asynchronously sends the data pointed to by buf to the device specified by vi This operation normally returns before the transfer terminates Thus the operation returns jobId which you can use with either viTerminate to abort the operation or with anl O completion event to identify which asynchronous write operation completed viWriteAsync vi buf count jobld Example Using This example program illustrates using non formatted I O functions to Non Formatted communicate with a GPIB device This example program is intended to I O Functions show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Trapping Errors in this chapter nonfmtio c This example program measures the AC voltage ona multimeter and prints the results You may need to change the device address inclu
122. CESS err handler vi err The following error handler prints a user readable string describing the error code passed to the function void err handler ViSession vi ViStatus err char err msg 1024 0 viStatusDesc vi err err msg printf ERROR s n err msg return 82 Chapter 4 Example Checking Instrument Errors Exception Handling Model Programming with VISA Trapping Errors When programming instruments it is good practice to check the instrument to ensure there are no instrument errors after each instrument function This example uses a SCPI command to check a specific instrument for errors void system _err ViStatus err char buf 1024 0 int err no SYSTEM ERR n err viPrintf vi if err lt VI SUCCESS err handler vi err err viScanf vi sdst amp err no amp buf if err lt VI_SUCCESS err handler vi err while err no gt 0 printf Error Found d s n err no buf err viScanf vi sd st amp err no amp buf err viFlush vi VI_READ BUF if err lt VI SUCCESS err handler vi err err viFlush vi VI WRITE BUF if err lt VI_SUCCESS err handler vi err Exception Events An alternative to trapping VISA errors by checking the return status after each VISA call is to use the VISA exception event On sessions where an exception event handler is installed and VI_EVENT_EXCEPTION is enabled the exce
123. COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB_ID ViJobid N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A GPIB Bus Interface INTFC Resource Events Event Name Attributes Data Type Range VI_EVENT_GPIB CIC VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_GPIB_CIC VI_ATTR_GPIB_RECV_CIC_ ViBoolean VI_TRUE STATE VI_FALSE VI_EVENT_GPIB TALK VI_ATTR EVENT TYPE ViEventType VI_EVENT_GPIB_ TALK VI_EVENT_GPIB_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_GPIB_ LISTEN LISTEN VI_EVENT_CLEAR VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_CLEAR VI_EVENT_TRIGGER VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIGGER VI_ATTR_RECV_TRIG ID VilInt16 VI_TRIG SW VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A Chapter 7 185 VISA Language Reference viEventHandler VXI Mainframe Backplane BACKPLANE Resource Events Event Name Attributes Data Type Range VI_EVENT_TRIG VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIG VI_ATTR_RECV_TRIG_ID ViInt16 VI_TRIG TTLO to VI_TRIG TTL7 VI_TRIG ECLO to VI_TRIG_ECL1 VI_EVENT_VXI_VME__ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_VME__ SYSFAIL SYSFAIL VI_EVEN
124. D secuii 49 Using Non Formatted VO a siaisccssiccanccnemactennonces aetna 59 Using Events and Handlers sssissssriissseiiissiarac 62 Events and PMNS aewaicssivasnrcrauenn inane rieensacieaencinaes 62 Using the Callback Method sicccicssscascasssssancciesindoaseeassseeesarssacs 69 Using the Queuing Method sicaicrssincascesstacactzsaneaaccranieeseeianors 77 Topon EN Sea 82 Tapon ENAS acra 82 Exception Evans sesocan ene Pr rere E te 83 USMO LOOKS renina eeianeinnnmMeneuEs 87 5 Programming via GPIB and VXI scccceessseeeeeeesseeeeeeeessseeeeeeenssneeees 93 GPIB and VXI Interfaces Overview eeeeeeeeeeeeeneteeeeeeetteeeeeeenaas 95 General Interface Information cccccceeeeesceeeeeessceeeeeees 95 GPIB Interfaces Overview o accccesssaseccatssnececcnsaancaeerssamianatianne 96 VAI Interfaces OVEIMOW sacccicicscciesniscineaiostieneaswertenesasetons 98 GPIB VXI Interfaces Overview cccceeeeeeeeeeeeeeeeeeeeeneeees 100 Using High Level Memory Functions assassiner 102 Programming the Registers soeccis ecssevissscracesaeecussanaaeois sen 102 High Level Memory Functions Examples 104 Using Low Level Memory Functions ccceecsccceeeeeeeteeeeeeeee 107 Programming the Registers aiciccscaisinusiniweiiaiainiieadsieaton 107 Low Level Memory Functions Examples 109 Using Low High Level Memory I O Methods csceeeeeee 112 Using Low Level viPeek VIPOKE 0 0 0 2 eeceeeeeettteeeeetetteeeeeeees 112 U
125. E Unique logical identifier of the RO ViEventType VI_EVENT_ event VXI_STOP VI_ATTR_SIGP_ The 16 bit Status ID value RO viuInt16 0 to FFFF STATUS_ID retrieved during the IACK cycle or from the Signal register VI_EVENT_TRIG Notification that a trigger interrupt was received from the device For VISA the only triggers that can be sensed are VXI hardware triggers on the assertion edge SYNC and ON trigger protocols only Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_TRIG event VI_ATTR_RECV_TRIG_ The identifier of the triggering RO viInt16 VI_TRIG TTLO to ID mechanism on which the specified trigger event was received VI_TRIG TTL7 VI_TRIG_ECLO to VI_TRIG ECL1 Agilent VISA can also return VI_TRIG_PANEL_IN exception to the VISA Specification VI_EVENT_IO_ COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation
126. E Resource Attributes VI_ATTR_TRIG_ ID VI_ATTR_ MAINFRAME LA Identifier for the current triggering mechanism This is the logical address of a given device in the mainframe usually the device with the lowest logical address Other possible values include the logical address of the Slot 0 controller or of the parent side extender Often these are all the same value The purpose of this attribute is to provide a unique ID for each mainframe A VISA manufacturer can choose any of these values but must be consistent across mainframes If this value is not known the attribute value returned is VI_UNKNOWN_LA VI_ATTR_VXI_VME_SYSFAIL_ STATE VI_ATTR_VXI_VME_INTR_STATUS This attribute shows the current state of the VXI VME SYSFAIL SYStem FAILure backplane line This attribute shows the current state of the VXI VME interrupt lines This is a bit vector with bits 0 6 corresponding to interrupt lines 1 7 VI_ATTR_VXI_TRIG_ STATUS This attribute shows the current state of the VXI trigger lines This is a bit vector with bits 0 9 corresponding to VI_TRIG_TTLO through VI_TRIG_ECL1 VI_ATTR_VXI_TRIG_ SUPPORT This attribute shows which VXI trigger lines this implementation supports This is a bit vector with bits 0 9 corresponding to VI_TRIG TTLO through VI_TRIG_ECLI1 Agilent VISA also returns 12 to indicate VI_TRIG_PANEL_IN for received triggers and VI_TRIG_PANEL_OUT for asserted triggers on Agilent VXI cont
127. END _EN VI_FALSE GPIB Specific SERVANT Resource Attributes VI_ATTR_GPIB_ RO Global viUInt16 0 to 30 N A PRIMARY ADDR VI_ATTR_GPIB_ RO Global viUInt16 0 to 31 VI_NO_ SECONDARY_ADDR VI_NO_SEC_ADDR SEC_ADDR 414 Appendix B VISA Resource Classes Servant Device Side SERVANT Resource Attribute Name Access Data Type Range Default Privilege GPIB Specific SERVANT Resource Attributes continued VI_ATTR_GPIB_REN_ RO Global ViUInt16 VI_STATE_UNKNOWN N A STATE VI_STATE_ ASSERTED VI_STATE_UNASSERTED VI_ATTR_GPIB ADDR_ RO Global ViUInt16 VI_GPIB_UNADDRESSED N A STATE VI_GPIB_ TALKER VI_GPIB_ LISTENER VXI Specific SERVANT Resource Attributes VI_ATTR_VXI_LA RO Global ViUInt16 0 to 511 N A VI_ATTR_CMDR_LA RO Global viUInt16 0 to 255 N A VI_UNKNOWN_LA TCPIP Specific SERVANT Resource Attributes VI_ATTR_TCPIP_ RO Global viString N A N A DEVICE_NAME SERVANT Resource Attribute Descriptions Attribute Name Generic SERVANT Resource Attributes Description VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_SEND_END_EN Whether to assert END during the transfer of the last byte of the buffer VI_ATTR_TERMCHAR Termination character When the termination character is read and VI_ATTR_T
128. END_NONE the write will not append anything to the data being written If it is set to VI_ASRL_END_ BREAK the write will transmit a break after all the characters for the write have been sent If it is set to VI_ASRL_END_LAST_ BIT the write will send all but the last character with the last bit clear then transmit the last character with the last bit set For example if VILATTR_ASRL DATA BITS is set to 8 then the write will clear the 8th bit for all but the last character then transmit the last character with the 8th bit set If it is set to VI_ASRL_END_TERMCHAR the write will send the character in VI_ATTR_TERMCHAR after the data being transmitted This attribute shows the current state of the Clear To Send CTS input signal VI_ATTR_ASRL_DCD_ STATE This attribute shows the current state of the Data Carrier Detect DCD input signal The DCD signal is often used by modems to indicate the detection of a carrier remote modem on the telephone line The DCD signal is also known as Receive Line Signal Detect RLSD VI_ATTR_ASRL_DSR_STATE This attribute shows the current state of the Data Set Ready DSR input signal VI_ATTR_ASRL_DTR_STATE This attribute is used to manually assert or unassert the Data Terminal Ready DTR output signal VI_ATTR_ASRL_RI_STATE This attribute shows the current state of the Ring Indicator RI input signal The RI signal is often used by modems to indicate that the tele
129. ERMCHAR_EN is enabled during a read operation the read operation terminates VI_ATTR_TERMCHAR_EN Flag that determines whether the read operation should terminate when a termination character is received VI_ATTR_TMO_ VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism Appendix B 415 VISA Resource Classes Servant Device Side SERVANT Resource Attribute Name Description Generic SERVANT Resource Attributes continued VI_ATTR_DEV_STATUS_ BYTE This attribute specifies the 488 style status byte of the local controller associated with this session VI_ATTR_WR_BUF_OPER_MODE Determines the operational mode of the write buffer When the operational mode is set to VI_FLUSH_WHEN FULL default the buffer is flushed when an END indicator is written to the buffer or when the buffer fills up If the operational mode is set to VI_FLUSH_ON_ACCESS the write buffer is flushed under the same conditions and also every time a viPrintf operation completes VI_ATTR_DMA_ ALLOW EN This attribute specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE In some implementations this attribute may have global effects even though it is documented to be a local attribute Since this affects performance a
130. ERROR_INV_SESSION The given session is invalid VI_ERROR_IO Could not perform read operation because of I O error VI_ERROR_NSUP_FMT A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation not performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before read operation completed Appendix A 363 VISA Library Information VISA Error Codes viVSPrintf vi buf writeFmt params Codes Description VI_SUCCESS Parameters were successfully formatted VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access vivSScanf vi buf readFmt params Codes VI_SUCCESS Description Data were successfully read and formatted into arg parameter s VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT
131. Error Codes Description VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_NSUP_ATTR The specified attribute is not defined by the referenced resource See Also viSetAttribute Chapter 7 197 VISA Language Reference viGpibCommand viGpibCommand Syntax viGpibCommand ViSession Vi ViBuf buf ViUInt32 count ViUInt32 retCount Description Write GPIB command bytes on the bus This operation attempts to write count number of bytes of GPIB commands to the interface bus specified by vi This operation is valid only on GPIB INTFC interface sessions This operation returns only when the transfer terminates If you pass VI_NULL as the retCount parameter to the viGpibCommand operation the number of bytes transferred will not be returned This may be useful if it is important to know only whether the operation succeeded or failed Parameters Name _ Direction Type Description buf IN ViBuf Buffer containing valid GPIB commands count IN ViUInt32 Number of bytes to be written retCount IN ViUInt32 Number of bytes actually transferred vi IN vViSession Unique logical identifier to a session Special Value for retCount Parameter Value Action Description VI_NULL Do not return the number of bytes transferred Return Values Type ViStatus This is the function return status It returns either a completion
132. FF0041 1073807295 VI_ERROR_NSUP_FMT BFFF0042 1073807294 VI_ERROR_LINE_IN USE BFFF0046 1073807290 VI_ERROR_NSUP_MODE BFFFO04A 1073807286 VI_ERROR_SRQ_NOCCURRED BFFFO04E 1073807282 VI_ERROR_INV_SPACE BFFF0051 1073807279 VI_ERROR_INV_OFFSET BFFF0052 1073807278 VI_ERROR_INV_WIDTH BFFF0054 1073807276 VI_ERROR_NSUP_OFFSET BFFF0055 1073807275 VI_ERROR_NSUP_VAR_WIDTH BFFF0057 1073807273 VI_ERROR_WINDOW_NMAPPED BFFF0059 1073807271 VI_ERROR_RESP_PENDING BFFF005F 1073807265 VI_ERROR_NLISTENERS BFFFOO60 1073807264 VI_ERROR_NCIC BFFF0061 1073807263 VI_ERROR_NSYS_CNTLR BFFF0067 1073807257 VI_ERROR_NSUP_OPER BFFF0068 1073807256 VI_ERROR_INTR_PENDING BFFF006A 1073807254 VI_ERROR_ASRL PARITY BFFF006B 1073807253 VI_ERROR_ASRL_FRAMING BFFFOO6C 1073807252 VI_ERROR_ASRL_OVERRUN BFFFOO6E 1073807250 VI_ERROR_TRIG NMAPPED BFFF0070 1073807248 VI_ERROR_NSUP_ALIGN_OFFSET BFFFOO71 1073807247 VI_ERROR_USER_BUF BFFF0072 1073807246 VI_ERROR_RSRC_BUSY BFFF0076 1073807242 VI_ERROR_NSUP_WIDTH BFFF0078 1073807240 VI_ERROR_INV_PARAMETER BFFF0079 1073807239 VI_ERROR_INV_PROT BFFF007B 1073807237 VI_ERROR_INV_SIZE BFFF0080 1073807232 VI_ERROR_WINDOW_MAPPED BFFF0081 1073807231 VI_ERROR_NIMPL_OPER BFFF0083 1073807229 VI_ERROR_INV_LENGTH BFFF0091 1073807215 VI_ERROR_INV_MODE 330 Appendix A VISA Library Information VISA Error Codes Hex Decimal VISA Status Code BFFFOO9C 1073807204 VI_ERROR_SESN_NLOCKED BFFFO
133. GPIB VX10 24 Change this address if necessary The register contents are then displayed include lt visa h gt f finclude lt stdlib h gt include lt stdio h gt void main ViSession defaultRM dmm Chapter 5 105 Programming via GPIB and VXI Using High Level Memory Functions unsigned short id_reg devtype reg Open session to VXI device at address 24 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB VX1I0 24 INSTR VI_NULL VI_NULL amp dmm Read instrument id register contents vilInl6 dmm VI_Al6 SPACE 0x00 amp id_ reg Read device type register contents vilInl6 dmm VI_Al6 SPACE 0x02 amp devtype reg Print results printf ID Register 0x 4X n id reg printf Device Type Register 0x 4X n devtype reg Close sessions viClose dmn viClose defaultRM 106 Chapter 5 Low Level Memory Functions Programming via GPIB and VXI Using Low Level Memory Functions Using Low Level Memory Functions Low level memory functions allow direct access to memory on the interface just as do high level memory functions However with low level memory function calls you must map a range of addresses and directly access the registers with low level memory functions such as viPeek32 and viPoke32 There is more programming effort required when using low level memory functions However the program execution speed can increase
134. I O error occurred during transfer VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge VI_ERROR_NLISTENERS VI_ERROR_NSUP_OPER No Listeners condition is detected both NRFD and NDAC are deasserted The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an output protocol error occurred during transfer VI_ERROR_RAW_RD_ PROT VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW_WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed Appendix A 357 VISA Library Information VISA Error Codes viScanf vi readFmt arg1 arg2 Codes Description VI_SUCCESS Data was successfully read and formatted into arg parameter s VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_IO VI_ERROR_NSUP_FMT VI_ERROR_RSRC_LOCKED Could not perform read operation because of I O error A fo
135. I Trigger Line VI_ATTR_TRIG_ ID Value TTL O VI_TRIG_TTLO TTL 1 VI_TRIG_TTL1 TTL 2 VI_TRIG_TTL2 TTL 3 VI_TRIG_TTL3 TTL 4 VI_TRIG TTL TTL5 VI_TRIG TTL5 TTL6 VI_TRIG_TTL6 TTL7 VI_TRIG_TTL7 ECL 0 VI_TRIG_ECLO ECL 1 VI_TRIG_ECL1 Panel In VI_TRIG_PANEL_IN Once you set a VXI trigger line you can set up an event handler to be called when the trigger line fires See Chapter 4 Programming with VISA for more information on setting up an event handler Once the VI_EVENT_TRIG event is enabled the VI_LATTR_TRIG_ID becomes a read only attribute and cannot be changed You must set this attribute prior to enabling event triggers The VI_ATTR_TRIG ID attribute can also be used by viAssertTrigger function to assert software or hardware triggers If VI_LATTR_TRIG ID is VI_TRIG_SwW the device is sent a Word Serial Trigger command If the attribute is any other value a hardware trigger is sent on the line corresponding to the value of that attribute Chapter 5 125 Programming via GPIB and VXI Using VXI Specific Attributes Notes 126 Chapter 5 Programming via LAN Programming via LAN This chapter gives guidelines for programming via a LAN Local Area Network A LAN is a way to extend the control of instrumentation beyond the limits of typical instrument interfaces The chapter contents are E LAN Interfaces Overview E Communicating with GPIB Devices via LAN NOTE This chapter does not describe programming
136. I1 8 INSTR GPIB 0 9 INSTR Matches GPIBO 2 INSTR and GPIB1 1 1 INSTR but not GPIB12 8 INSTR GPIB 0 INSTR Matches GPIB1 1 1 INSTR but not GPIBO 2 INSTR or GPIB12 8 INSTR VXI INSTR Matches VXI0 1 INSTR but not GPIB VXI0 1 INSTR GPIB VXI INSTR Matches GPIB VXI0 1 INSTR but not VXIO 1 INSTR VXI 0 9 INSTR Matches VXI0 1 INSTR and GPIB VXI0O 1 INSTR ASRL 0 9 INSTR Matches ASRL1 INSTR but not VXIO 5 INSTR ASRL1 INSTR Matches ASRL1 INSTR and ASRL11 INSTR but not ASRL2 INSTR Chapter 4 55 Programming with VISA Sending I O Commands Example Expression Sample Matches GPIB VXI INSTR Matches GPIB1 5 INSTR and VXIO 3 INSTR but not ASRL2 INSTR GPIBO VXIO 1 INSTR Matches GPIBO 1 INSTR and VXIO 1 INSTR INSTR Matches all INSTR device resources VXI 0 9 2 MEMACC Matches VXIO MEMACC and GPIB VXI1 MEMACC VXIO Matches VX1I0 1 INSTR VXI0 2 INSTR and VXI0O MEMACC Matches all resources Format Codes This table summarizes the format codes for sending and receiving formatted I O Format Codes Description viPrintf viVPrintf and viQueryf viVqueryf writeFmt d i Corresponding argument is an integer f Corresponding argument is a double c Corresponding argument is a character
137. ISA Language Reference viEventHandler NOTE Future versions of VISA or specific implementations of VISA may take actions based on other return values so users should return VI_SUCCESS from handlers unless there is a specific reason to do otherwise This table lists events and associated read only attributes implemented by Agilent VISA that can be read to get event information on a specific event Use the viReadSTB function to read the status byte of the service request Instrument Control INSTR Resource Events Event Name Attributes Data Type Range VI_EVENT_SERVICE_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_SERVICE_ REQUEST REQ VI_EVENT_VXI_SIGP VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_STOP VI_ATTR_SIGP_STATUS_ID ViUInt16 0 to FFFFh VI_EVENT_TRIG VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_TRIG VI_ATTR_RECV_TRIG_ID VilInt16 VI_TRIG TTLO to VI_TRIG TTL7 VI_TRIG ECLO to VI_TRIG_ ECL1 VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT viUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A 184 Chapter 7 Memory Access MEMACC Resource Events VISA Language Reference viEventHandler Event Name Attributes Data Type Range VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_
138. I_ATTR_RECV_TRIG_ID VilInt16 VI_TRIG TTLO to VI_TRIG TTL7 VI_TRIG ECLO to VI_TRIG_ECL1 VI_EVENT_VXI_VME__ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_VME__ SYSFAIL SYSFAIL VI_EVENT_VXI_VME__ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_VME__ SYSRESET SYSRESET TCPIP Socket SOCKET Resource Events Event Name Attributes Data Type Range VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET_ COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A Parameters Name Direction Type Description inEventType IN ViEventType Logical identifier of the event s to wait for outContext OUT ViEvent A handle specifying the unique occurrence of an event outEventType OUT ViEventType Logical identifier of the event actually received 314 Chapter 7 Return Values VISA Language Reference viWaitOnEvent Name Direction Type Description timeout IN ViUInt32 Absolute time period in time units that the resource shall wait for a specified event to occur before returning the time elapsed error The time unit is in milliseconds vi IN viSession Unique logical identifier to a session Special Value for outEventType Parameter Value Description VI_NULL Do not return the type of event Special Value for outContext Parameter Value Description VI_NULL Do not r
139. I_EVENT SERVICE REQ VI QUEUE Every time a wait on event is invoked an event context object is created Specifying VI_TMO_INFINITE in the timeout parameter indicates that the program execution will suspend indefinitely until the event occurs To clear the event queue for a specified event type use the viDiscardEvents function This program enables the trigger event in a queuing mode When the viWaitOnEvent function is called the program will suspend operation until the trigger line is fired or the timeout period is reached Since the trigger lines were already fired and the events were put into a queue the function will return and print the trigger line that fired This program is intended to show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Trapping Errors in this chapter This example program is installed on your system in the SAMPLES subdirectory on Windows environments or in the examples subdirectory on HP UX See Appendix A VISA Library Information for locations of example programs on your operating system evntqueu c This example program illustrates enabling an event queue using viWaitOnEvent Note that you must change the device address include lt visa h gt finclude lt stdio h gt void main ViSession defaultRM vi ViEventTyp ventType ViEvent even
140. Invalid offset specified VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SPACE Invalid address space specified 344 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_NSUP_ALIGN_OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viInstallHandler vi eventType handler userHandle Codes Description VI_SUCCESS Event handler installed successfully VI_ERROR_HNDLR_NINSTALLED The handler was not installed This may be returned if an application attempts to install multiple handlers for the same event on the same session VI_ERROR_INV_EVENT VI_ERROR_INV_HNDLR_REF Specified event type is not defined by the resource The given handler reference is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid vilLock vi lockType timeout requestedKey accessKey Codes Description VI_SUCCESS The sp
141. ND _EN VI_FALSE GPIB Specific INTFC Resource Attributes VI_ATTR_GPIB_ RW Global viUInt16 0 to 30 N A PRIMARY _ADDR VI_ATTR_GPIB_ RW Global ViUInt16 0 to 31 VI_NO_SEC_ SECONDARY_ADDR VI_NO_SEC_ADDR ADDR VI_ATTR_GPIB_REN_ RO Global viInt16 VI_STATE_ ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_ UNKNOWN VI_ATTR_GPIB_ATN_ RO Global viInt16 VI_STATE ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_UNKNOWN VI_ATTR_GPIB_NDAC_ RO Global ViInt16 VI_STATE ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_UNKNOWN Appendix B 403 VISA Resource Classes GPIB Bus Interface INTFC Resource Attribute Name Access Privilege Data Type Range Default GPIB Specific INTFC Resource Attributes continued VI_ATTR_GPIB_SRQ_ RO Global virnt16 VI_STATE ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_ UNKNOWN VI_ATTR_GPIB_CIC_ RO Global ViBoolean VI_TRUE N A STATE VI_FALSE VI_ATTR_GPIB_SYS_ RW Global ViBoolean VI_TRUE N A CNTRL_STATE VI_FALSE VI_ATTR_GPIB_ RW Global virnt16 1 to 15 N A HS488 CBL LEN VI_GPIB_HS488_ DISABLED VI_GPIB_HS488_NIMPL VI_ATTR_GPIB_ RO Global virnt16 VI_GPIB_UNADDRESSED N A ADDR_STATE VI_GPIB_TALKER VI_GPIB_LISTENER INTFC Resource Attribute Descriptions Attribute Name Description Generic INTFC Resource Attributes VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the
142. NF_NAME This string attribute is the manufacturer s name The value of this attribute should be used for display purposes only and not for programmatic decisions as the value can be different between VISA implementations and or revisions VI_ATTR_MODEL_NAME This string attribute is the model name of the device The value of this attribute should be used for display purposes only and not for programmatic decisions as the value can be different between VISA implementations and or revisions VI_ATTR_VXI_TRIG SUPPORT GPIB VXI Specific INSTR Resource This attribute shows which VXI trigger lines this implementation supports This is a bit vector with bits 0 9 corresponding to VI_TRIG TTLO through VI_TRIG ECL1 Attribute VI_ATTR_INTF_PARENT_NUM Board number of the GPIB board to which the GPIB VXI is attached ASRL Specific INSTR Resource Attributes VI_ATTR_ASRL_AVAIL_NUM This attribute shows the number of bytes available in the global receive buffer VI_ATTR_ASRL_BAUD This is the baud rate of the interface It is represented as an unsigned 32 bit integer so that any baud rate can be used but it usually requires a commonly used rate such as 300 1200 2400 or 9600 baud VI_ATTR_ASRL_ DATA BITS This is the number of data bits contained in each frame from 5 to 8 The data bits for each frame are located in the low order bits of every byte stored in memory 388 Appendix B VISA
143. O9D 1073807203 VI_ERROR_MEM NSHARED BFFFOO9E 1073807202 VI_ERROR_LIBRARY_NFOUND BFFFOO9F 1073807201 VI_ERROR_NSUP_INTR BFFFOOAO 1073807200 VI_ERROR_INV_LINE BFFFOOA1 1073807199 VI_ERROR_FILE ACCESS BFFFOOA2 1073807198 VI_ERROR_ FILE I0 BFFFOOA3 1073807197 VI_ERROR_NSUP_LINE BFFFOOA4 1073807196 VI_ERROR_NSUP_MECH BFFFOOA5 1073807195 VI_ERROR_INTF_NUM_NCONFIG BFFFOOA6 1073807194 VI_ERROR_CONN_LOST VISA Error Codes Alphabetical This table lists VISA completion and error codes in alphabetical order Codes Description Success Codes VI_SUCCESS Operation completed successfully VI_SUCCESS_DEV_NPRESENT Session opened successfully but the device at the specified address is not responding VI_SUCCESS_EVENT DIS VI_SUCCESS_EVENT_EN The specified event is already disabled The specified event is already enabled for at least one of the specified mechanisms VI_SUCCESS MAX CNT The number of bytes specified were read VI_SUCCESS_NCHAIN Event handled successfully Do not invoke any other handlers on this session for this event VI_SUCCESS_NESTED EXCLUSIVE The specified access mode was successfully acquired and this session has nested exclusive locks VI_SUCCESS NESTED SHARED The specified access mode was successfully acquired and this session has nested shared locks VI_SUCCESS_QUEUE_EMPTY The event queue was empty while trying to discard queued events
144. OR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_HNDLR_REF Either the specified handler reference or the user context value or both does not match any installed handler VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid viUnlock vi Codes Description VI_SUCCESS The lock was successfully relinquished VI_SUCCESS NESTED EXCLUSIVE VI_SUCCESS NESTED SHARED The call succeeded but this session still has nested exclusive locks The call succeeded but this session still has nested shared locks VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_SESN_NLOCKED The current session did not have any lock on the resource VI_ERROR_SESN_NLOCKED viUnmapAddress Vi The current session did not have any lock on the resource Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_WINDOW_NMAPPED The specified session is not currently mapped Appendix A 361 VISA Library Information VISA Error Codes viUnmapTrigger vi trigSrc trigDest
145. RDER VI_ATTR_WIN_ BYTE ORDER This attribute specifies the byte order to be used in high level access operations such as viOutXX and viMoveOutxXx when writing to the destination This attribute specifies the byte order to be used in low level access operations such as viMapAddress viPeekXX and viPokexx when accessing the mapped window VI_ATTR_SRC_ACCESS_PRIV VI_ATTR_DEST_ACCESS_PRIV This attribute specifies the address modifier to be used in high level access operations such as viInXxX and viMoveInxx when reading from the source This attribute specifies the address modifier to be used in high level access operations such as viOutXX and viMoveOutxx when writing to the destination VI_ATTR_WIN_ACCESS_PRIV GPIB VXI Specific MEMACC Resource Attributes This attribute specifies the address modifier to be used in low level access operations such as viMapAddress viPeekxXx and viPokexXx when accessing the mapped window VI_ATTR_INTF_PARENT_NUM Board number of the GPIB board to which the GPIB VXI is attached VI_ATTR_GPIB_PRIMARY ADDR Primary address of the GPIB VXI controller used by the given session VI_ATTR_GPIB_SECONDARY_ADDR Secondary address of the GPIB VXI controller used by the given session Appendix B 399 VISA Resource Classes Memory Access MEMACC Resource MEMACC Resource Events This resource defines the following event for communication with applicati
146. RL_DATA_ RW Global ViUInt16 5to8 8 BITS VI_ATTR_ASRL_ RW Global viuInt1 VI_ASRL_PAR_NONE VI_ASRL_ PARITY VI_ASRL_PAR_ODD PAR_NONE VI_ASRL_PAR_EVEN VI_ASRL_PAR_MARK VI_ASRL_PAR_SPACE VI_ATTR_ASRL_STOP_ RW Global ViUInt16 VI_ASRL_STOP_ONE VI_ASRL_ BITS VI_ASRL_STOP_TWO STOP_ONE VI_ATTR_ASRL_FLOW_ RW j Global viuIntl VI_ASRL_FLOW_NONE VI_ASRL_ CNTRL VI_ASRL_FLOW_XON_XOFF FLOW_NONE VI_ASRL_FLOW_RTS CTS VI_ASRL_FLOW_DTR_DSR VI_ATTR_ASRL_END_ RW _ Local ViUInt16 VI_ASRL_END NONE VI_ASRL_ IN VI_ASRL_END LAST BIT END_ VI_ASRL_END_TERMCHAR TERMCHAR VI_ATTR_ASRL_END_ RW Local ViUInt16 VI_ASRL_END NONE VI_ASRL_ OUT VI_ASRL_END_ LAST BIT END_NONE VI_ASRL_END_TERMCHAR VI_ASRL_END_BREAK VI_LATTR_ASRL_CTS_ RO Global ViUInt16 VI_STATE_ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_ UNKNOWN VI_LATTR_ASRL_DCD_ RO j Global viUIntl VI_STATE_ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE UNKNOWN VI_ATTR_ASRL_DSR_ RO Global ViUInt16 VI_STATE_ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_ UNKNOWN VI_ATTR_ASRL_RI_ RO Global ViUInt16 VI_STATE_ ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_ UNKNOWN 382 Appendix B VISA Resource Classes Instrument Control INSTR Resource Attribute Name Access Data Type Range Default Privilege ASRL Specific INSTR Resource Attribute continued VI_LATTR_ASRL_DTR_ RW_ j Global ViUInt16 VI_STATE_ASSERTED N A STATE VI_S
147. ROR_WINDOW_MAPPED The specified offset is currently in use by viMapAddress viMove vi srcSpace srcOffset srcWidth destSpace destOffset destWidth Length Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_LENGTH Invalid length specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_OFFSET VI_ERROR_INV_SESSION Invalid source or destination offset specified The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE Invalid source or destination address space specified VI_ERROR_INV_WIDTH Invalid source or destination width specified VI_ERROR_NSUP_ALIGN_OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Invalid source or destination offset is not accessible from this hardware VI_ERROR_NSUP_ORDER The given vi does not support this operation VI_ERROR_NSUP_VAR_WIDTH Cannot support source and destination widths that are different VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware 348 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_RSRC_LOCKED Specified opera
148. Reference viClose viClose viClose ViSession ViEvent ViFindList Vi This function closes the specified resource manager session device session find list returned from the viFindRsrc function or event context returned from the viWaitOnEvent function or passed to an event handler In this process all the data structures that had been allocated for the specified vi are freed NOTE The viClose function should not be called from within an event handler In VISA 1 1 and greater viClose VI_NULL returns VI_WARN_NULL_OBJECT rather than an error Name Direction Type Description vi IN ViSession Unique logical identifier to a session event ViEvent or find list ViFindList Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Session closed successfully VI_WARN_NULL_OBJECT The specified object reference is uninitialized Chapter 7 171 See Also VISA Language Reference viClose Error Codes Description VI_ERROR_CLOSING_FAILED Unable to deallocate the previously allocated data structures corresponding to this session or object reference VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value viOpen viFindRsrc viWaitOnEvent viEventHandler 172 Chapter 7 Syntax
149. Resource Classes Instrument Control INSTR Resource Attribute Name Description ASRL Specific INSTR Resource Attributes continued VI_ATTR_ASRL_PARITY This is the parity used with every frame transmitted and received VI_ASRL_PAR_ MARK means that the parity bit exists and is always 1 means that the parity bit exists and is always 0 VI_ATTR_ASRL_STOP_ BITS This is the number of stop bits used to indicate the end of a frame The value VI_ASRL_STOP_ONES indicates one and one half 1 5 stop bits VI_ATTR_ASRL_FLOW_CNTRL If this attribute is set to VI_LATTR_ASRL_FLOW_NONE the transfer mechanism does not use flow control and buffers on both sides of the connection are assumed to be large enough to hold all data transferred If this attribute is set to VI_LATTR_ASRL_FLOW_XON_XOFF the transfer mechanism uses the XON and XOFF characters to perform flow control The transfer mechanism controls input flow by sending XOFF when the receive buffer is nearly full and it controls the output flow by suspending transmission when XOFF is received If this attribute is set to VI_LATTR_ASRL FLOW RTS CTS the transfer mechanism uses the RTS output signal and the CTS input signal to perform flow control The transfer mechanism controls input flow by unasserting the RTS signal when the receive buffer is nearly full and it controls output flow by suspending the transmission when the CTS signal is unasserted If this
150. SA The description for each Resource Class includes NOTE Attributes are local or global A local attribute only affects the session specified A global attribute affects the specified device from any session Attributes can also be read only RO and read write RW The Generic Attibutes listed apply to all listed interface types For example VI_ATTR_INTF_NUM is listed as a Generic INSTR Resource Attribute so VI_ATTR_INTF_NUM applies to the GPIB GPIB VXI VXI ASRL and TCPIP interfaces as well Resource Overview Resource Attributes Resource Events Resource Operations Functions 376 Appendix B VISA Resource Classes Instrument Control INSTR Resource Instrument Control INSTR Resource This section describes the Instrument Control INSTR Resource that is provided to encapsulate the various operations of a device reading writing triggering etc INSTR Resource Overview The Instrument Control INSTR Resource like any other resource defines the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute which is defined in the VISA Resource Template Although the INSTR resource does not have viSetAttribute listed in its operations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its specific operations and attributes that allow it to
151. SA Resource Classes Instrument Control INSTR Resource Attribute Name Access Data Type Range Default Privilege VXI and GPIB VXI Specific INSTR Resource Attributes continued VI_ATTR_SRC_ RW Local ViUInt16 VI_DATA_NPRIV VI DATA_ ACCESS PRIV VI DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV VI_D64_NPRIV VI_D64_PRIV VI_ATTR_DEST_ RW Local ViUInt16 VI_DATA_NPRIV VI DATA_ ACCESS _PRIV VI DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV VI_D64_NPRIV VI_D64_PRIV VI_ATTR_WIN_ RW Local ViUInt16 VI_DATA_NPRIV VI DATA_ ACCESS _PRIV VI DATA_PRIV PRIV VI_PROG_NPRIV VI_PROG_PRIV VI_BLCK_NPRIV VI_BLCK_PRIV VI_ATTR_VXI_DEV_ RO Global ViUInt16 VI_VXI_CLASS_MEMORY N A CLASS VI_VXI_CLASS_EXTENDED VI_VXI_CLASS_ MESSAGE VI_VXI_CLASS_ REGISTER VI_VXI_CLASS_ OTHER VI_ATTR_MANF_ RO Global viString N A N A NAME VI_ATTR_MODEL _ RO Global viString N A N A NAME GPIB VXI Specific INSTR Resource Attribute VI_ATTR_INTF_ RO Global ViUInt16 0 to FFFFy VI_ATTR_ PARENT_NUM INTF_ PARENT _NUM Appendix B 381 VISA Resource Classes Instrument Control INSTR Resource Attribute Name Access Data Type Range Default Privilege ASRL Specific INSTR Resource Attribute VI_ATTR_ASRL_ RO Global viUInt32 0 to FFFFFFFFy 0 AVAIL NUM VI_ATTR_ASRL_BAUD RW Global ViUInt32 Oto FFFFFFFFy 9600 VI_ATTR_AS
152. SA calls from Visual Basic Chapter 2 25 Example Program Source Code Building a VISA Application in Windows Building a VISA Program Visual Basic 10 To add this module to your project in VB 6 0 from the menu select Project Add Module select the Existing tab browse to the directory containing the VB Declaration file select visa32 bas and click Open The name and location of the VB declaration file depends on which operating system is used Assuming the standard VISA directory C Program Files Visa or the standard VXlpnp directory C VXIpnp the visa32 bas file can be located in one of these directories winnt include visa32 bas Windows NT 2000 win95 include visa32 bas Windows 95 98 Me At this point the Visual Basic project can be run and debugged You will need to change the VISA Interface Name and address in the code to match your device s configuration If you want to compile to an executable file from the menu select File Make idn exe and press Open This will create idn exe in the idn directory An explanation of the various function calls in the example is provided after the program listing If the program runs correctly the following is an example of the output in a Message Box if connected to a 54601A oscilloscope HEWLETT PACKARD 54601A 0 1 7 If the program does not run see the Event Viewer for a list of run time errors The source file idn bas follows Option E
153. SSION VI_ERROR_INV_OBJECT VI_ERROR_NSUP_ATTR The given session or object reference is invalid both are the same value The specified attribute is not defined by the referenced resource VI_ERROR_NSUP_ATTR_STATE The specified state of the attribute is not valid or is not supported as defined by the resource The application probably will not work if this error is returned VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also viGetAttribute See Appendix B VISA Resource Classes for a list of attributes and attribute values 282 Chapter 7 Syntax Description Parameters VISA Language Reference viSetBuf viSetBuf viSetBuf ViSession vi ViUInt16 mask ViUInt32 size Set the size for the formatted I O and or serial communication buffer s This operation changes the buffer size of the read and or write buffer for formatted I O and or serial communication The mask parameter specifies whichbuffer to set the size of The mask parameter can specify multiple buffers by bit ORing any of the following values together Flag Interpretation VI_READ_ BUF Formatted 1 O read buffer VI_WRITE_BUF Formatted 1 O write buffer VI_IO_IN_ BUF I O communication receive buffer VI_IO_OUT_BUF I O communication transmit buffer For backward compatibility VI_IO_IN_BUF is the s
154. ST n Set up device and send comma separated list viPrintf vi CALC DBM REF 50 n viPrintf vi MEAS VOLT AC 2f n list 58 Chapter 4 Non Formatted 1 0 Functions Programming with VISA Sending I O Commands Read results viScanf vi Slf amp res Print results printf Measurement Results 1f n res Close session viClose vi viClose defaultRM Using Non Formatted I O There are two non buffered non formatted I O functions that synchronously transfer data called viRead and viWrite Also there are two non formatted I O functions that asynchronously transfer data called viReadAsync and viWriteAsync These are raw I O functions and do not intermix with the formatted I O functions The non formatted I O functions follow For more information see the viRead viWrite viReadAsync viWriteAsync and viTerminate functions in Chapter 7 VISA Language Reference E viRead The viRead function synchronously reads raw data from the session specified by the vi parameter and stores the results in the location where buf is pointing Only one synchronous read operation can occur at any one time viRead vi buf count retCount E viWrite The viWrite function synchronously sends the data pointed to by buf to the device specified by vi Only one synchronous write operation can occur at any one time viWrite vi buf count retCount E viReadAsync The viRead
155. S_ID 32 bit status ID retrieved RO viUInt32 0 to FFFFFFFFy during the IACK cycle VI_ATTR_RECV_INTR_ VXI interrupt level on which RO vIInt16 1 to 7 LEVEL the interrupt was received VI_UNKNOWN_LEVEL INSTR Resource Operations viAssertTrigger vi protocol viBufRead vi buf count retCount viBufWrite vi buf count retCount viClear vi viFlush vi mask viGpibControl1REN vi mode vilIn16 vi space offset val16 vilIn32 vi space offset val32 viln8 vi space offset val8 viMapAddress vi mapSpace mapBase mapSize access suggested address viMemAlloc vi size offset viMemF ree vi offset Appendix B 393 VISA Resource Classes Instrument Control INSTR Resource viMove vi srcSpace srcOffset srcWidth destSpace destOffset destWiath length viMoveAsync vi srcSpace srcOffset srcWidth destSpace destOffset destWiath length jobld viMoveIn8 vi space offset length buf8 viMovelIn16 vi space offset length buf16 viMovelIn32 vi space offset length buf32 viMoveOut8 vi space offset length buf8 viMoveOut16 vi space offset length buf16 viMoveOut32 vi space offset length buf32 viOuts vi space offset val8 viOut16 vi space offset val16 viOut32 vi space offset val32 viPeek8 vi addr val8 viPeek16 vi addr val16 viPeek32 vi addr val32 viPoke vi addr val8 viPokel16 vi addr val16 viPoke32 vi addr val32 v
156. Status This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS The operation completed successfully Error Codes Description VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_WINDOW_NMAPPED The specified offset is currently in use by viMapAddress viMemAlloc Chapter 7 223 Syntax Description VISA Language Reference viMove viMove viMove ViSession vi ViUInt16 srcSpace ViBusAddress srcOffset ViUInt16 srcWidth ViUInt16 destSpace ViBusAddress destOffset ViUInt16 destWidth ViBusSize length This operation moves data from the specified source to the specified destination The source and the destination can either be local memory or the offset of the interface with which this INSTR or MEMACC resource is associated This operation uses the specified data width and address space If the viSession parameter vi refers to an INSTR session the offset parameters specify relative offsets from the start of the instrument s address space If the viSession parameter vi refers to a MEMACC session the offset parameters are absolute offsets from the start of memory in the specified VXI address space Valid entries for specifyi
157. TATE_UNASSERTED VI_STATE_UNKNOWN VI_ATTR_ASRL_RTS_ RW_ Global ViUInt16 VI_STATE ASSERTED N A STATE VI_STATE_UNASSERTED VI_STATE_UNKNOWN VI_ATTR_ASRL_ RW _ Local viUInts 0 to FFy 0 REPLACE CHAR VI_ATTR_ASRL_ XON_ IRW Local ViUInts 0 to FF lt Ctr1 Q gt CHAR 114 VI_ATTR_ASRL_XOFF_ RW Local ViUInt8 0 to FF lt Ctr1 s gt CHAR 13 TCPIP Specific INSTR Resource Attributes VI_ATTR_TCPIP ADDR RW Global viString N A N A VI_ATTR_TCPIP HOST RW Global viString N A N A _NAME VI_ATTR_TCPIP_ RW Global viString N A N A DEVICE_NAME The attribute VI_ATTR_TRIG_ID is RW readable and writeable when the corresponding session is not enabled to receive trigger events When the session is enabled to receive trigger events the attribute VI_ATTR_TRIG_IDis RO read only Appendix B 383 VISA Resource Classes Instrument Control INSTR Resource INSTR Resource Attribute Descriptions Attribute Name Description Generic INSTR Resource Attributes VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_IO_PROT Specifies which protocol to use In VXI systems for example you can choose between normal word serial or fast data channel FDC In GPIB you can choose between normal and high speed HS488 data transfers In ASRL systems
158. TCPIP TCPIP board host address LAN device name INSTR TCPIP TCPIP board host address port SOCKET Examples of Address Strings for rsrcName Parameter Address String Description VX10 1 INSTR A VXI device at logical address 1 in VXI interface VXIO GPIB VXI 9 INSTR A VXI device at logical address 9 in a GPIB VXI controlled VXI system 238 Chapter 7 Return Values VISA Language Reference viOpen GPIB 1 0 INSTR A GPIB device at primary address 1 and secondary address 0 in GPIB interface 0 ASRL1 INSTR A serial device located on port 1 VXI MEMACC Board level register access to the VXI interface GPIB VX1I1 MEMACC Board level register access to GPIB VXI interface number 1 GPIB2 INTFC Interface or raw resource for GPIB interface 2 VXI 1 BACKPLANE TCPIPO 1 2 3 4 999 SOCKET TCPIP devicename company com INSTR Mainframe resource for chassis 1 on the default VXI system which is interface 0 Raw TCPIP access to port 999 at the specified address TCPIP device using VXI 11 located at the specified address This uses the default LAN Device Name of instO Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Session opened successfully VI_SUCCESS DEV_NPRESENT Session Opened Succ
159. TR_RET COUNT Actual number of elements RO viUInt32 0 to FFFFFFFFy Address of a buffer that was RO ViBuf N A used in an asynchronous operation that were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation RO viString N A generating the event Example Reading Event Attributes Once you have decided which attribute to check you can read the attribute using the viGetAttribute function The following example shows one way you could check which trigger line fired when the VI_LEVENT_TRIG event was delivered Note that the context parameter is either the event context passed to your event handler or the outcontext specified when doing a wait on event See VISA Attributes in this chapter for more information on reading attribute states ViInt16 state viGetAttribute context VI ATTR RECV TRIG ID amp state Using the Callback Method The callback method of event notification is used when an immediate response to an event is required To use the callback method for receiving notification that an event has occurred you must do the following Then when the enabled event occurs the installed event handler is called E Install an event handler with the viInstallHandler function E Enable one or several events with the viEnableEvent function Chapter 4 69 Programming with VISA Using Events and Handlers Example Using the This example shows one way you can use the callback
160. T_VXI_VME__ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_VXI_VME__ SYSRESET SYSRESET TCPIP Socket SOCKET Resource Events Event Name Attributes Data Type Range VI_EVENT_IO_ VI_ATTR_EVENT_TYPE ViEventType VI_EVENT_IO_ COMPLETION COMPLETION VI_ATTR_STATUS viStatus N A VI_ATTR_JOB ID ViJobId N A VI_ATTR_BUFFER ViBuf N A VI_ATTR_RET COUNT ViUInt32 0 to FFFFFFFFh VI_ATTR_OPER_NAME ViString N A Parameters Name Direction Type Description context IN ViEvent A handle specifying the unique occurrence of an event eventType IN ViEventType Logical event identifier userHandle IN ViAddr A value specified by an application that can be used for identifying handlers uniquely in a session for an event vi IN ViSession Unique logical identifier to a session 186 Chapter 7 Return Values See Also VISA Language Reference viEventHandler Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Event enabled successfully See Chapter 4 Programming with VISA for more information on event handling and exception handling Chapter 7 187 Syntax Description Parameters Return Values See Also VISA Language Reference viFindNext viFindNext viFindNext ViFindList findList ViPRsrc instrDesc This function returns the next resource found in the list created by viFindRsrc The list is referenced by the handle that was r
161. The read write function was aborted because timeout expired while function was in progress viSetBuf Chapter 7 195 Syntax Description Parameters VISA Language Reference viGetAttribute viGetAttribute viGetAttribute ViSession ViEvent ViFindList vi ViAttr attribute ViAttrState attrState This function retrieves the state of an attribute for the specified session Name _ Direction Type Description attribute IN ViAttr Resource attribute for which the state query is made attrState OUT See Note The state of the queried attribute for a below specified resource The interpretation of the returned value is defined by the individual resource Note that you must allocate space for character strings returned vi IN ViSession Unique logical identifier to a session ViEvent event or find list ViFindList NOTE 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 ViChar you must pass a pointer to a ViChar variable You must allocate space for the returned data 196 Chapter 7 VISA Language Reference viGetAttribute Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Resource attribute retrieved successfully
162. Timeout expired before function completed viReadToFile vi fileName count retCount Codes Description VI_SUCCESS The function completed successfully and the END indicator was received for interfaces that have END indicators VI_SUCCESS TERM CHAR The specified termination character was read VI_SUCCESS MAX CNT The number of bytes read is equal to count 356 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_ASRL_FRAMING A framing error occurred during transfer VI_ERROR_ASRL_OVERRUN An overrun error occurred during transfer A character was not read from the hardware before the next character arrived VI_ERROR_ASRL_PARITY A parity error occurred during transfer VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_FILE_ACCESS An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights VI_ERROR_FILE_IO An error occurred while accessing the specified file VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start read function because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown
163. Type ViUInt32 timeout ViEventType outEventType ViEvent outContext This function waits for an occurrence of the specified event for a given session In particular this function suspends execution of an application thread and waits for an event inEventType for at least the time period specified by timeout See the individual event descriptions for context definitions If the specified inEventType is VI_ALL_ ENABLED EVENTS the function waits for any event that is enabled for the given session If the specified timeout value is VI_TMO_INFINITE the function is suspended indefinitely to wait for an occurrence of an event If the value VI_TMO_IMMEDIATE is specified in the timeout parameter of viWaitOnEvent application execution is not suspended This operation can be used to dequeue events from an event queue by setting the timeout value to VI_TMO_IMMEDIATE viWaitOnEvent removes the specified event from the event queue if one that matches the type is available The process of dequeuing makes an additional space available in the queue for events of the same type You must call viEnableEvent to enable the reception of events of the specified type before calling viWaitOnEvent viWaitOnEvent does not perform any enabling or disabling of event reception If the value VI_NULL is specified in the outContext parameter of viWaitOnEvent and the return value is successful viClose is automatically invoked on the event context rather than returning
164. Type ViEventType The location of a ViEventType ViEventFilter viUInt32 Specifies filtering masks or other information unique to an event ViObject viUInt32 Contains attributes and can be closed when no longer needed ViPObject ViObject The location of a ViObject viSession ViObject Specifies the information necessary to manage a communication channel with a resource ViPSession ViPSession The location of a ViSession 326 Appendix A VISA Library Information VISA Type Definitions VISA Data Type Type Definition Description ViFindList ViObject Contains a reference to all resources found during a search operation ViPFindList ViFindList The location of a ViFindList ViEvent ViObject Contains information necessary to process an event ViPEvent ViEvent The location of a ViEvent ViHndlr viStatus A value representing an entry point to an operation for use ViSession as a callback ViEventType ViEvent ViAddr ViReal32 float A 32 bit single precision value ViPReal32 vViReal32 The location of a 32 bit single precision value ViReal64 double A 64 bit double precision value ViPReal 64 ViReal64 The location of a 64 bit double precision value ViJobId viUInt32 The location of a variable that will be set to the job identifier ViKeyId ViString The location of a string Appendix A 327 VISA Library Information VISA Error Codes VISA Error Codes This
165. UInt32 nmatches ViFindList list viFindRsrc defaultRM VXI INSTR amp list amp nmatches matches viFindNext list matches viClose list 48 Chapter 4 Programming with VISA Sending I O Commands Sending I O Commands This section gives guidelines to send I O commands including E Types of I O E Using Formatted I O E Using Non Formatted I O Types of I O Once you have established a communications session with a device you can start communicating with that device using VISA s I O routines VISA provides both formatted and non formatted I O routines E Formatted I O converts mixed types of data under the control of a format string The data is buffered thus optimizing interface traffic E Non formatted I O sends or receives raw data to or from a device With non formatted I O no format or conversion of the data is performed Thus if formatted data is required it must be done by the user You can choose between VISA s formatted and non formatted O routines However since the non formatted I O performs the low level I O you should not mix formatted I O and non formatted I O in the same session See the following sections for descriptions and examples using formatted I O and non formatted I O in VISA Using Formatted I O The VISA formatted I O mechanism is similar to the C stdio mechanism The VISA formatted I O functions are viPrintf viQueryf and viScanf There are also two non buffered and non fo
166. Unique logical identifier to a session writeFmt IN viString ViString describing the format of the write arguments Chapter 7 259 Return Values See Also VISA Language Reference viQueryf Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Successfully completed the Query operation Error Codes Description VI_ERROR_ALLOC VI_ERROR_INV_FMT The system could not allocate a formatted I O buffer because of insufficient resources A format specifier in the writeFmt or readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO VI_ERROR_NSUP_FMT Could not perform read write operation because of I O error The format specifier is not supported for current argument type VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access VI_ERROR_TMO Timeout occurred before read write operation completed viPrintf viScanf viVQueryf 260 Chapter 7 VISA Language Reference viRead Le viRead Syntax viRead ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Description This function synchronously transfers data from a device The data that is r
167. V Specifies the address modifier used in high level access operations such as viInxx and viMoveInxx when reading from the source VI_ATTR_DEST_ACCESS_PRIV Specifies address modifier used in high level access operations such as viOutxx and viMoveOutxx when writing to destination VI_ATTR_ WIN ACCESS _PRIV Specifies address modifier used in low level access operations such aS viMapAddress viPeekxx and viPokexx when accessing the mapped window Chapter 5 121 Programming via GPIB and VXI Using the Memory Access Resource GPIB VXI Specific The following Read Only attributes provide specific address information MEMACC Attributes about GPIB hardware Attribute Description VI_ATTR_INTF_PARENT_NUM Board number of the GPIB board to which the GPIB VXI is attached VI_ATTR_GPIB_PRIMARY_ADDR Primary address of the GPIB VXI controller used by the session VI_ATTR_GPIB_SECONDARY_ADD R Secondary address of the GPIB VXI controller used by the session MEMACC Resource The following Read Only events provide notification that an asynchronous Event Attribute operation has completed Attribute Description VI_ATTR_EVENT_TYPE Unique logical identifier of the event VI_ATTR_STATUS Return code of the asynchronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous I O operation that has completed VI_ATTR_BUFFER Addres
168. VAList vi IN ViSession Unique logical identifier to a session Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Data was successfully read and formatted into arg parameter s Chapter 7 287 VISA Language Reference viSScanf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient system resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access 288 Chapter 7 VISA Language Reference viStatusDesc viStatusDesc Syntax viStatusDesc ViSession ViEvent ViFindList vi viStatus status ViString desc Description This function returns a user readable string that describes the status code passed to the function If a status code cannot be interpreted by the session viStatusDesc returns the warning VI_WARN_UNKNOWN_STATUS Parameters Name Direction Type Description desc OUT viString The user readable string int
169. VENT_TRIG event VI_ATTR_RECV_ The identifier of the triggering RO viInt16 VI_TRIG TTLO to TRIG_ID mechanism on which the specified trigger event was received VI_TRIG TTL7 VI_TRIG ECLO to VI_TRIG ECL1 VI_LEVENT_IO_COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO ViJobId N A operation that has completed 392 Appendix B VISA Resource Classes Instrument Control INSTR Resource Event Attributes Description AP Data Type Range VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation VI_ATTR_RET COUNT Actual number of elements RO viUInt32 0 to FFFFFFFF that were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation viString N A generating the event VI_EVENT_VXI_VME_INTR Notification that a VXlbus interrupt was received from the device NOT IMPLEMENTED IN AGILENT VISA Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of RO ViEventType VI_EVENT_VXI_ the event VME_INTR VI_ATTR_STATU
170. VI_A32_SPACE VI_ATTR_MODEL_ CODE RO Global ViUInt16 0 to FFFFy N A VI_ATTR_SLOT RO Global ViInt16 0 to 12 N A VI_UNKNOWN_SLOT VI_ATTR_VXI_LA RO Global viInt16 0 to 511 N A Appendix B 379 VISA Resource Classes Instrument Control INSTR Resource Attribute Name Access Data Type Range Default Privilege VXI and GPIB VXI Specific INSTR Resource Attributes continued VI_ATTR_CMDR_LA RO Global ViInt16 0 to 255 N A VI_UNKNOWN_LA VI_ATTR_IMMEDIATE_ RO Global ViBoolean VI_TRUE N A SERV VI_FALSE VI_ATTR_FDC_CHNL RW Local ViUInt16 0 to7 N A VI_ATTR_FDC_GEN_ RW Local ViBoolean VI_TRUE VI_FALSE SIGNAL_EN VI_FALSE VI_ATTR_FDC_ MODE RW Local ViUInt16 VI_FDC_NORMAL VI_FDC_ VI_FDC_STREAM NORMAL VI_ATTR_FDC_USE_ RW Local ViBoolean VI_TRUE VI_FALSE PAIR VI_FALSE VI_ATTR_SRC_ RW Local ViInt32 0 to 1 1 INCREMENT VI_ATTR_DEST_ RW Local ViInt32 0 to 1 1 INCREMENT VI_ATTR_WIN_ RO Local ViUInt16 VI_NMAPPED VI_ ACCESS VI_USE_OPERS NMAPPED VI_DEREF_ADDR VI_ATTR_WIN_BASE__ RO Local ViBusAddr N A N A ADDR ess VI_ATTR_WIN_SIZE RO Local ViBusSize N A N A VI_ATTR_SRC_BYTE_ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ ORDER VI_LITTLE_ENDIAN ENDIAN VI_ATTR_DEST_ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ BYTE ORDER VI_LITTLE_ENDIAN ENDIAN VI_ATTR_WIN_ RW Local ViUInt16 VI_BIG ENDIAN VI_BIG_ BYTE ORDER VI_LITTLE_ENDIAN ENDIAN 380 Appendix B VI
171. VI_ATTR_SLOT Physical slot location of the VXlbus device If the slot number is not known VI_UNKNOWN_SLOT is returned VI_ATTR_VXI_LA Logical address of the VXI or VME device used by the given session For a VME device the logical address is actually a pseudo address in the range 256 to 511 VI_ATTR_CMDR_LA Logical address of the commander of the VXI device used by the given session VI_ATTR_IMMEDIATE SERV Specifies whether the given device is an immediate servant of the controller running VISA VI_ATTR_FDC_CHNL This attribute determines which FDC channel will be used to transfer the buffer VI_ATTR_FDC_SIGNAL_GEN_EN Setting this attribute to VI_TRUE lets the servant send a signal when control of the FDC channel is passed back to the commander This action frees the commander from having to poll the FDC header while engaging in an FDC transfer VI_ATTR_FDC_MODE This attribute determines which FDC mode to use Normal mode or Stream mode VI_ATTR_FDC_USE_PAIR If set to VI_TRUE a channel pair will be used for transferring data Otherwise only one channel will be used VI_ATTR_SRC_INCREMENT This is used in the viMoveInxx operation to specify how much the source offset is to be incremented after every transfer The default value of this attribute is 1 that is the source address will be incremented by 1 after each transfer and the viMoveInxx operation moves from consecutive elem
172. VI_ERROR_INV_SESSION The given vi does not identify a valid session VI_WARN_NULL_OBJECT The specified object reference is uninitialized viDisableEvent vi eventType mechanism Codes Description VI_SUCCESS Event disabled successfully VI_SUCCESS EVENT DIS Specified event is already disabled for at least one of the specified mechanisms VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given vi does not identify a valid session Appendix A 339 VISA Library Information VISA Error Codes viDiscardEvents vi eventType mechanism Codes Description VI_SUCCESS Event queue flushed successfully VI_SUCCESS_QUEUE_EMPTY Operation completed successfully but queue empty VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given vi does not identify a valid session viEnableEvent vi eventType mechanism context Codes Description VI_SUCCESS Event enabled successfully VI_SUCCESS_EVENT_EN The specified event is already enabled for at least one of the specified
173. VI_SUCCESS_QUEUE_NEMPTY The event queue is not empty Appendix A 331 VISA Library Information VISA Error Codes Codes Description VI_SUCCESS SYNC The read or write operation performed synchronously VI_SUCCESS TERM CHAR The specified termination character was read VI_SUCCESS_TRIG MAPPED The path from trigSrc to trigDest is already mapped Warning Codes VI_WARN_CONFIG_NLOADED The specified configuration either does not exist or could not be loaded using VISA specified defaults VI_WARN_NSUP_ATTR_STATE VI_WARN_NSUP_BUF VI_WARN_UNKNOWN_STATUS The attribute state is not supported by this resource The specified buffer is not supported The status code passed to the function was unable to be interpreted VI_WARN_UNKNOWN_STATUS The status code passed to the function was unable to be interpreted Error Codes VI_ERROR_ABORT Calls in the current process executing on the specified vi are aborted VI_ERROR_ALLOC Insufficient system resources to open a session or to allocate the buffer s or memory block of the specified size VI_ERROR_ASRL_FRAMING A framing error occurred during transfer VI_ERROR_ASRL_OVERRUN VI_ERROR_ASRL_PARITY An overrun error occurred during transfer A character was not read from the hardware before the next character arrived A parity error occurred during transfer VI_ERROR_ATTR_READONLY The attribut
174. VX1I0 24 INSTR VI_NULL VI_NULL amp Scanner viClose scanner viClose dmn viClose defaultRM Chapter 4 43 Programming with VISA Using Sessions Addressing a Session As shown in the previous section the rsrcName parameter in the viOpen function is used to identify a specific resource This parameter consists of the VISA interface name and the resource address The interface name is determined when you run the VISA configuration utility This name is usually the interface type followed by a number The following table illustrates the format of the rsrcName for different interface types INSTR is an optional parameter that indicates that you are communicating with a resource that is of type INSTR meaning instrument The keywords are E ASRL establishes communication with asynchronous serial devices E GPIB establishes communication with GPIB devices or interfaces E GPIB VxXI is used for GPIB VXI controllers E TCPIP establishes communication with LAN instruments E vxI is used for VXI instruments Interface Typical Syntax ASRL ASRL board INSTR GPIB GPIB board primary address secondary address INSTR GPIB GPIB board INTFC GPIB VxXI GPIB VXI board VXI logical address INSTR GPIB VXI GPIB VXI board MEMACC GPIB VxI GPIB VXI board VXI logical address BACKPLANE TCPIP TCPIP board host address LAN device
175. V_TRIG_ The identifier of the triggering RO viInt16 VI_TRIG_ SW ID mechanism on which the specified trigger event was received VI_EVENT_IO_COMPLETION Notification that an asynchronous operation has completed Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of buffer used in an RO viBuf N A asynchronous operation VI_ATTR_RET_ COUNT Actual number of elements RO viUInt32 0 to FFFFFFFF that were asynchronously transferred VI_ATTR_OPER_NAME The name of the operation RO viString N A generating the event Chapter 4 67 Programming with VISA Using Events and Handlers VXI Mainframe Backplane BACKPLANE Resource Events VI_EVENT_TRIG Notification that a trigger interrupt was received from the backplane For VISA the only triggers that can be sensed are VXI hardware triggers on the assertion edge SYNC and ON trigger protocols only Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ TRIG event VI_ATTR_RECV_TRIG_ The identifier of the trigg
176. Values None See Also viPoke8 viPoke16 viPoke32 viMapAddress viln8 viln16 viln32 248 Chapter 7 VISA Language Reference viPoke8 viPoke16 and viPoke32 viPoke8 viPoke16 and viPoke32 Syntax viPoke8 ViSession vi ViAddr addr ViUInt8 val8 viPokel6 ViSession vi ViAddr addr ViUInt16 val16 viPoke32 ViSession vi ViAddr addr ViUInt32 val32 Description This function takes an 8 bit 16 bit or 32 bit value and stores its content to the address pointed to by addr The address must be a valid memory address in the current process mapped by a previous viMapAddress Call Parameters Name Direction Type Description addr IN ViAddr Specifies the destination address to store the value val8 IN ViUInt8 Data written to bus 8 bits for viPoke8 val16 or ViUInt16 16 bits for viPoke16 and 32 bits for val32 or viPoke32 ViUInt32 vi IN vViSession Unique logical identifier to a session NOTE ViAddr is defined as a void To do pointer arithmetic you must cast this to an appropriate type ViUInt8 ViUInt16 or ViUInt32 Then be sure the offset is correct for the type of pointer you are using For example ViUInt8 addr 4 points to the same location as ViUInt16 addr 2 Return Values None See Also viPeek8 viPeek16 viPeek32 viMapAddress viOut8 viOut16 viOut32 Chapter 7 249 Syntax Description VISA Language Reference viPrintf viPrintf viPrintf ViSession v
177. Write viBufWrite ViSession Vi ViBuf buf ViUInt32 count ViUInt32 retCount Similar to viWrite except the data is written to the formatted I O write buffer rather than directly to the device This operation is similar to viWrite and does not perform any kind of data formatting It differs from viWrite in that the data is written to the formatted I O write buffer the same buffer as used by viPrintf and related operations rather than directly to the device This operation can intermix with the viPrintf operation but mixing it with the viWrite operation is discouraged If you pass VI_NULL as the retCount parameter to the viBufWrite operation the number of bytes transferred will not be returned This may be useful if it is important to know only whether the operation succeeded or failed Name Direction Type Description buf IN ViBuf Represents the location of a data block to be sent to the device count IN ViUInt32 Number of bytes to be written retCount OUT ViUInt32 Represents the location of an integer that will be set to the number of bytes actually transferred vi IN ViSession Unique logical identifier to a session Special Value for retCount Parameter Value Action Description VI_NULL Do not return the number of bytes transferred Chapter 7 167 VISA Language Reference viBufWrite Return Values Type viStatus This is the function return status It returns either a
178. _ IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO INFINITE VI_ATTR_TRIG ID RW Local ViInt16 VI_TRIG_SW VI_TRIG SW VI_TRIG TTLO to VI_TRIG TTL7 VI_TRIG_ECLO to VI_TRIG ECL1 378 Appendix B VISA Resource Classes Instrument Control INSTR Resource Attribute Name Access Data Type Range Default Privilege Generic INSTR Resource Attributes continued VI_ATTR_WR_BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_WHEN_FULL WHEN_FULL VI_ATTR_DMA ALLOW_ RW Local ViBoolean VI_TRUE N A EN VI_FALSE VI_ATTR_FILE_ RW Local ViBoolean VI_TRUE VI_FALSE APPEND _EN VI_FALSE VI_ATTR_GPIB_ RO Global ViUInt16 0 to 30 N A PRIMARY ADDR VI_ATTR_GPIB_ RO Global ViUInt16 0 to 31 N A SECONDARY_ADDR VI_NO_SEC_ADDR VI_ATTR_GPIB_ RW Local Viboolean VI_TRUE VI_TRUE READDR_EN VI_FALSE VI_ATTR_GPIB_ RW Local Viboolean VI_TRUE VI_FALSE UNADDR_EN VI_FALSE VI_ATTR_GPIB_ RO Global ViUInt16 VI_STATE_UNKNOWN N A REN_STATE VI_STATE_ ASSERTED VI_STATE_UNASSERTED VXI and GPIB VXI Specific INSTR Resource Attributes VI_ATTR_MAINFRAME_ RO Global viInt16 0 to 255 N A LA VI_UNKNOWN_LA VI_ATTR_MANF_ID RO Global ViUInt16 0 to FFF N A VI_ATTR_MEM BASE RO Global ViBusAddr N A N A ess VI_ATTR_MEM SIZE RO Global ViBusSize N A N A VI_ATTR_MEM SPACE RO Global ViUInt16 VI_A16_ SPACE VI_A16_ VI_A24 SPACE SPACE
179. _ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viSPrintf viVPrintf Chapter 7 305 Syntax Description Parameters Return Values VISA Language Reference viVSScanf viVSScanf viVSScanf ViSession Vi ViBuf buf viString readFmt ViVAList params This function reads converts and formats data using the format specifier and then stores the formatted data in params This operation is similar to vivScanf except data are read from a user specified buffer rather than a device Name __ Direction Type Description buf IN ViBuf Buffer from which data are read and formatted params OUT ViVAList A list with the variable number of parameters into which data are read and the format string is applied readFmt IN viString The format string to apply to parameters in ViVAList vi IN ViSession Unique logical identifier to a session Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Data were successfully read and formatted into arg parameter s 306 Chapter 7 See Al
180. _INV_OBJECT Description The given session or object reference is invalid both are the same value VI_ERROR_QUEUE_ERROR Unable to queue read operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also viRead viTerminate viWrite viWriteAsync Chapter 7 265 Syntax Description Parameters Return Values VISA Language Reference viReadSTB viReadSTB viReadSTB ViSession vi ViUInt16 status Read a status byte of the service request This operation reads a service request status from a service requester the message based device For example on the IEEE 488 2 interface the message is read by polling devices For other types of interfaces a message is sent in response to a service request to retrieve status information For a session to a Serial device or TCPIP socket if VI_ATTR_IO_PROT is VI_PROT_4882_STRS the device is sent the string STB n and then the device s status byte is read Otherwise this operation is not valid If the status information is only one byte long the most significant byte is returned with the zero value If the service requester does not respond in the actual timeout period VI_ERROR_TMO is returned Name Direction Type Description vi IN ViSession Unique logical identifier to the session status OUT viuInt16 Service request status byte
181. _TERMCHAR Termination character When the termination character is read and VI_ATTR_TERMCHAR EN is enabled during a read operation the read operation terminates VI_ATTR_TERMCHAR_EN Flag that determines whether the read operation should terminate when a termination character is received VI_ATTR_TMO_VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism VI_ATTR_WR_BUF_OPER_MODE Determines the operational mode of the write buffer When the operational mode is set to VI_FLUSH_WHEN FULL default the buffer is flushed when an END indicator is written to the buffer or when the buffer fills up If the operational mode is set to VI_FLUSH_ON_ACCESS the write buffer is flushed under the same conditions and also every time a viPrintf operation completes VI_ATTR_DMA_ALLOW_EN This attribute specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE In some implementations this attribute may have global effects even though it is documented to be a local attribute Since this affects performance and not functionality that behavior is acceptable VI_ATTR_RD_BUF_OPER_MODE Determines the operational mode of the read buffer When the operational mode is set to VI_FLUSH_DISABLE default the buffer is flushed only on explicit
182. a timer and waits for the reply from the server If the server does not reply in the time specified the client stops waiting for the reply from the server and returns an error The LAN Client configuration specifies two timeout related configuration values for the LAN software These values are used by the software to calculate timeout values See the Agilent IO Libraries Installation and Configuration Guide for Windows for information on setting these values E Server Timeout Timeout value passed to the server when an application sets the VISA timeout to infinity VI_TMO_INFINITE Value specifies the number of seconds the server will wait for the operation to complete before returning an error If this value is zero 0 the server will wait forever E Client Timeout Delta Value added to the VISA timeout value server s timeout value to determine the LAN timeout value client s timeout value Value specifies the number of seconds Chapter 6 143 Application Terminations and Timeouts Programming via LAN Communicating with GPIB Devices via LAN The timeouts are adjusted using the following algorithm E The VISA Timeout which is sent to the server for the current call is adjusted if it is currently infinity VI_TMO_INFINITE In that case it will be set to the Server Timeout value E The LAN Timeout is adjusted if the VISA Timeout plus the Client Timeout Delta is greater than the current LAN Timeout In this case the LAN T
183. ace offset length buf16 viMoveOut32 vi space offset length buf32 viOut8 vi space offset val8 viOut16 vi space offset val16 vi0ut32 vi space offset val32 viPeek8 vi addr val8 viPeek16 vi addr val16 viPeek32 vi addr val32 viPoke vi addr val8 viPokel16 vi addr val16 viPoke32 vi addr val32 viUnmapAddress vi Appendix B 401 VISA Resource Classes GPIB Bus Interface INTFC Resource GPIB Bus Interface INTFC Resource This section describes the GPIB Bus Interface INTFC Resource that is provided to encapsulate the operations and properties of a raw GPIB interface reading writing triggering etc INTFC Resource Overview A VISA GPIB Bus Interface INTFC Resource like any other resource defines the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute Although the INTFC resource does not have viSetAttribute listed in its operations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its specific operations and attributes that allow it to perform its dedicated task The INTFC Resource lets a controller interact with any devices connected to the board associated with this resource Services are provided to send blocks of data onto the bus request blocks of data from the bus trigger devices on the bus and send mi
184. ads and writes Other forms include triggering or varying forms of asynchronous control instrument driver Library of functions for controlling a specific instrument interface A generic term that applies to the connection between devices and controllers It includes the communication media and the device controller hardware necessary for cross communication Glossary 427 interrupt An asynchronous event requiring attention out of the normal flow of control of a program mapping An operation that returns a reference to a specified section of an address space and makes the specified range of addresses accessible to the requester This function is independent of memory allocation operation An action defined by a resource that can be performed on a resource process An operating system component that shares a system s resources A multi process system is a computer system that allows multiple programs to execute simultaneously each in a separate process environment A single process system is a computer system that allows only a single program to execute at a given point in time register An address location that either contains a value that is a function of the state of hardware or can be written into to cause hardware to perform a particular action or to enter a particular state In other words an address location that controls and or monitors hardware resource or resource instance An instrument while using VISA In general
185. akes requests of another computing device the server for certain services As shown in the following figure a LAN client such as a Series 700 HP UX workstation or a Windows 95 98 Me NT 2000 PC makes VISA requests over the network to a LAN server such as a Series 700 HP UX workstation a Windows 95 98 Me NT 2000 PC or an E2050 LAN GPIB Gateway The LAN server is connected to the instrumentation or devices to be controlled Once the LAN server has completed the requested operation on the instrument or device the LAN server sends a reply to the LAN client This reply contains requested data and status information that indicates whether or not the operation was successful The LAN server acts as a gateway between the LAN software that the client system supports and the instrument specific interface that the device supports Chapter 6 129 Programming via LAN LAN Interfaces Overview a Client LAN Server Series 700 PCs or Windows 95 98 Me 2000 NT PCs E2050 LAN GPIB Gateway GPIB bus Series 700 PCs or or other Windows 95 98 Me 2000 NT PCs LAN Instruments VXI 11 2 GPIB Emulation or VXI 11 3 LAN Instruments GPIB Instrument GPIB In
186. alid both are the same value Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE Invalid source or destination address specified VI_ERROR_INV_WIDTH Invalid source or destination width specified VI_ERROR_NSUP_ALIGH_OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified source or destination offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_NSUP_VAR_WIDTH Cannot support source and destination widths that are different VI_ERROR_NSUP_WIDTH Specified width is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viMoveAsync Also see MEMACC Resource Description 226 Chapter 7 Syntax Description VISA Language Reference viMoveAsync viMoveAsync viMoveAsync ViSession vi ViUInt16 srcSpace ViBusAddress srcOffset ViUInt16 srcWidth ViUInt16 destSpace ViBusAddress destOffset ViUInt16 destWidth ViBusSize length ViJobId jobld NOTE This function is implemented synchronously in Agilent VISA This operation asynchronously moves data from the specified source to the specified destination This operation queues up the transfer in t
187. also returns a handle to a find list This handle points to the list of resources and it must be used as an input to viFindNext When this handle is no longer needed it should be passed to viClose The search criteria specified in the expr parameter has two parts a regular expression over a resource string and an optional logical expression over attribute values The regular expression is matched against the resource strings of resources known to the VISA Resource Manager If the resource string matches the regular expression the attribute values of the resource are then matched against the expression over attribute values If the match is successful the resource has met the search criteria and gets added to the list of resources found Agilent VISA does not support matching of attribute values The optional attribute expression allows construction of expressions with the use of logical ANDs ORs and NOTs Equal and unequal comparators can be used compare attributes of any type In addition other inequality comparators gt lt gt lt can be used to compare attributes of numeric type Only global attributes can be used in the attribute expression The syntax of expr is defined as follows The grouping operator ina logical expression has the highest precedence The not operator ina logical expression has the next highest precedence after the grouping operator and the or operator in a logical expression has the
188. ame as VI_ASRL_IN_BUF and VI_IO OUT_BUF is the same as VI_ASRL_OUT_BUF Since not all serial drivers support user defined buffer sizes it is possible that a specific implementation of VISA may not be able to control this feature If an application requires a specific buffer size for performance reasons but a specific implementation of VISA cannot guarantee that size it is recommended to use some form of handshaking to prevent overflow conditions Name Direction Type Description mask IN viUInt16 Specifies the type of buffer size IN ViUInt32 The size to be set for the specified buffer s vi IN ViSession Unique logical identifier to a session Chapter 7 283 VISA Language Reference viSetBuf Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Buffer size set successfully VI_WARN_NSUP_BUF The specified buffer is not supported Error Codes Description VI_ERROR_ALLOC The system could not allocate the buffer s of the specified size because of insufficient system resources VI_ERROR_INV_MASK The system cannot set the buffer for the given mask VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_RSRC_LOCKED The given session or object reference is invalid both are the same value Specified operation could not be perfor
189. an attempting to set an attribute value that specifies required but nonexistent hardware such as specifying a VXI ECL trigger line when no hardware support exists or a value that would change assumptions a resource might make about the way data is stored or formatted such as byte order See specific attribute descriptions for text that allows the completion code VI_WARN_NSUP_ATTR_STATE Name Direction Type Description attribute IN ViAttr Resource attribute for which the state is modified attrState IN ViAttrState The state of the attribute to be set for the specified resource The interpretation of the individual attribute value is defined by the resource Chapter 7 281 VISA Language Reference viSetAttribute Name Direction Type Description vi IN ViSession Unique logical identifier to a session ViEvent event or find list ViFindList Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Attribute value set successfully VI_WARN_NSUP_ATTR_STATE Although the specified attribute state is valid it is not supported by this resource implementation The application will still work but this may have a performance impact Error Codes Description VI_ERROR_ATTR_READONLY The specified attribute is read only VI_ERROR_INV_SE
190. an error code as follows Completion Code Description VI_SUCCESS Successfully completed the Query operation Error Codes Description VI_ERROR_ALLOC VI_ERROR_INV_FMT The system could not allocate a formatted I O buffer because of insufficient resources A format specifier in the writeFmt or readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO VI_ERROR_NSUP_FMT Could not perform read write operation because of I O error The format specifier is not supported for current argument type VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout occurred before read write operation completed viVPrintf viVScanf viQueryf Chapter 7 301 VISA Language Reference viVScanf viVScanf Syntax viVScanf ViSession vi ViString readFmt ViVAList params Description This function reads converts and formats data using the format specifier and then stores the formatted data in params This function is similar to viScanf except that the VivAList parameters list provides the parameters rather than separate arg parameters Parameters Name__ Direction Type Description params OUT ViVAList A list with the variable number of parameters into
191. at 254 Chapter 7 VISA Language Reference viPrintf Modifier Interpretation Length modifier L arg is a long double array size arg points to an array of floats or doubles or long doubles depending on the length modifier of size array size The elements of this array are separated by array size 1 commas and output in the specified format Argument type A reference to a NULL terminated string that is sent to the device without change Enhanced Format Codes b Argument type A location of a block of data Flag or Interpretation Modifier Default The data block is sent as an IEEE 488 2 lt DEFINITE LENGTH functionality ARBITRARY BLOCK RESPONSE DATA gt A count long integer must appear as a flag that specifies the number of elements by default bytes in the block A field width or precision modifier is not allowed with this format code asterisk An asterisk may be present instead of the count In such a case two args are used the first of which is a long integer specifying the count of the number of elements in the data block The second arg is a reference to the data block The size of an element is determined by the optional length modifier see below the default being byte width Length The data block is assumed to be an array of unsigned short modifier h integers 16 bits The count corresponds to the number of words rather than bytes The data is
192. at and Store Data viVScanf ViSession vi ViString readFmt ViVAList params Receive Data from Buffer Format and Store Data viSScanf ViSession Vi ViBuf buf ViString readFmt arg1 arg2 Receive Data from Buffer Format and Store Data viVSScanf ViSession Vi ViBuf buf ViString readFmt ViVAList params Chapter 7 155 VISA Language Reference VISA Functions Overview Operation Function Type Parameter1 Type Parameter2 Formatted I O continued Formatted Write and Read Operation viQueryf ViSession vi ViString writeFmt ViString readFmt arg1 arg2 Formatted Write and Read Operation vivVQueryf ViSession vi ViString writeFmt ViString readFmt ViVAList params Memory I O Read 8 bit Value from Memory Space Read 16 bit Value from Memory Space vilIn8 ViSession vi ViUInt16 space ViBusAddress offset ViUInt8 val8 vilInl6 ViSession vi ViUInt16 space ViBusAddress offset ViUInt16 val16 Read 32 bit Value from Memory Space vilIn32 ViSession vi ViUInt16 space ViBusAddress offset ViUInt32 val32 Write 8 bit Value to Memory Space viOut8 ViSession vi ViUInt16 space ViBusAddress offset ViUInt8 val8 Write 16 bit Value to Memory Space vi0ut16 ViSession vi ViUInt16 space ViBusAddress offset ViUInt16 val16 Write 32 bit Value to Memory Space vi0ut32 ViSession vi ViUInt16 space ViBusAddress
193. ates the maximum number of digits after the decimal point is specified s Indicates the maximum number of characters for the string is specified g Indicates the maximum significant digits are specified This example converts numb so that there are only two digits to the right of the decimal point and sends it to the session specified by vi float numb 26 9345 viPrintf vi 2 n numb Sends 26 93 Argument Length Modifier The meaning of the optional argument length modifierh 1 L z or Zis dependent on the conversion character as listed in the following table Note that z and z are not ANSI C standard modifiers Argument Format Description Length Codes Modifier h d b B Corresponding argument is a short integer or a reference to a short integer for d For b or B the argument is the location of a block of data or a reference to a data array B is only used with viPrintf or viQueryf writeFmt f Corresponding argument is a long integer or B a reference to a long integer for d For f the argument is a double float or a reference toa double float For b or B the argument is the location of a block of data or a reference toa data array B is only used with viPrintf or viQueryf writeFmt Chapter 4 Example Using Array Size Modifier Programming with VISA Sending I O Commands Argument Format Description Length Codes Modifier L f Corresponding argume
194. attribute is set to VI_ASRL_FLOW_DTR_DSR the transfer mechanism uses the DTR output signal and the DSR input signal to perform flow control The transfer mechanism controls input flow by unasserting the DTR signal when the receive buffer is nearly full and it controls output flow by suspending the transmission when the DSR signal is unasserted This attribute can specify multiple flow control mechanisms by bit ORing multiple values together However certain combinations may not be supported by all serial ports and or operating systems Appendix B 389 VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description ASRL Specific INSTR Resource Attributes continued VI_ATTR_ASRL_END_IN This attribute indicates the method used to terminate read operations If it is set to VI_LASRL_END_NONE the read will not terminate until all of the requested data is received or an error occurs If itis setto VI_ASRL_END_TERMCHAR the read will terminate as soon as the character in VI _ATTR_TERMCHAR is received If it is set to VI_ASRL_END LAST BIT the read will terminate as soon as a character arrives with its last bit set For example if VI_ATTR_ASRL DATA BITS is set to 8 then the read will terminate when a character arrives with the 8th bit set VI_ATTR_ASRL_END_ OUT VI_ATTR_ASRL_ CTS STATE This attribute indicates the method used to terminate write operations If it is set to VI_ASRL_
195. be byte swapped and padded as appropriate if native computer representation is different Byte order Data being read is assumed to be in standard IEE 488 2 big modifier ob endian format This is the default behavior if neither ob nor o1 is present Byte order Data being read is assumed to be in little endian format modifier ol Name __ Direction Type Description arg1 OUT N A A list with the variable number of arg2 parameters into which the data is read and readFmt IN the format string is applied viString String describing the format for arguments vi IN ViSession Unique logical identifier to a session Chapter 7 279 Return Values See Also VISA Language Reference viScanf Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Data was successfully read and formatted into arg parameter s Error Codes VI_ERROR_ALLOC Description The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO VI_ERROR_NSUP_FMT Could not perform read function because of I O error A format specifier in the readFmt str
196. because the resource is already locked with a lock type incompatible with the lock requested VI_ERROR_RSRC_NFOUND Insufficient location information or resource not present in the system VI_ERROR_TMO A session to the resource could not be obtained within the specified timeout period VI_SUCCESS_DEV_NPRESENT Session opened successfully but the device at the specified address is not responding Appendix A 351 VISA Library Information VISA Error Codes viOpenDefaultRM sesn Codes Description VI_SUCCESS Session to the Default Resource Manager resource created successfully VI_ERROR_ALLOC Insufficient system resources to create a session to the Default Resource Manager resource VI_ERROR_INV_SETUP Some implementation specific configuration file is corrupt or does not exist VI_ERROR_SYSTEM_ERROR The VISA system failed to initialize viOut8 vi space offset val8 viOut16 vi space offset val16 viOut32 vi space offset v al32 Codes Description VI_SUCCESS VI_ERROR_INV_SESSION Operation completed successfully The given session is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind
197. ble that will be set to the job identifier of this asynchronous write operation Value VI_NULL Description Do not return a job identifier Return Values Type vViStatus This is the function return status It returns either a completion code or an error code as follows VI_SUCCESS Completion Codes Description Asynchronous write operation successfully queued VI_SUCCESS_ SYNC Write operation performed synchronously Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_QUEUE_ERROR Unable to queue write operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also viRead viTerminate viWrite viReadAsync 320 Chapter 7 Syntax Description Parameters VISA Language Reference viWriteFromFile viWriteFromFile viWriteFromFile ViSession vi ViConstString fileName ViUInt32 count ViUInt32 retCount Take data from a file and write it out synchronously This write operation synchronously transfers data The file specified in fileName is opened in binary read only mode and the data up to end of file or the number of bytes specified in count are read The data is then written to the device This operation returns only when the transfe
198. buf ViString writeFmt ViVAList params Same as viVPrintf except data are written to a user specified buffer rather than a device This operation is similar to vivPrint except the output is not written to the device but is written to the user specified buffer This output buffer will be NULL terminated If the vivSPrintf operation outputs an END indicator before all the arguments are satisfied the rest of the writeFmt string will be ignored and the buffer string will still be terminated by a NULL Name Direction Type Description buf OUT ViBuf Buffer where data are to be written params IN ViVAList A list containing the variable number of parameters on which the format string is applied The formatted data are written to the specified device vi IN ViSession Unique logical identifier to a session writeFmt IN ViString The format string to apply to parameters in ViVAList Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Parameters were successfully formatted 304 Chapter 7 See Also VISA Language Reference viVSPrintf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION VI
199. by the VXI 11 protocol during connection SERVANT Resource Events This resource defines the following events for communication with applications where AP Access Privilege VI_EVENT_CLEAR Notification that the local controller has been sent a device clear message Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_CLEAR VI_LEVENT_IO_COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation VI_ATTR_RET COUNT Actual number of elements RO viUInt32 0 to FFFFFFFF that were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation RO viString N A generating the event Appendix B 417 VISA Resource Classes Servant Device Side SERVANT Resource VI_EVENT_GPIB_TALK Notification that the GPIB controller has been addressed to talk Event Attribute Description AP Data Type Range
200. cate the buffer s of the specified size because of insufficient system resources VI_ERROR_INV_MASK The system cannot set the buffer for the given mask VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viSPrint vi buf writeFmt arg1 arg2 Codes Description VI_SUCCESS Parameters were successfully formatted VI_ERROR_ALLOC VI_ERROR_INV_FMT The system could not allocate a formatted I O buffer because of insufficient system resources A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access Appendix A 359 VISA Library Information VISA Error Codes viSScanf vi buf readFmt arg1 arg2 Codes Description VI_SUCCESS Data were successfully read and formatted into arg parameter s VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insuf
201. ce is the offset address relative to the device s allocated address base for the corresponding address space specified For example if space specifies VI_A16 SPACE offset specifies the offset from the logical address base address of the VXI device specified If space specifies VI_A24 SPACE or VI_A32_SPACE offset specifies the offset from the base address of the VXI device s memory space allocated by the VXI Resource Manager within VXI A24 or A32 space The length specified in the viMoveInxx operations is the number of elements of the size corresponding to the operation to transfer beginning at the specified offset Therefore offset length size cannot exceed the amount of memory exported by the device in the given space The length specified in the viMoveInxx operations is the number of elements of the size corresponding to the operation to transfer beginning at the specified offset Therefore offset length size cannot exceed the total amount of memory available in the given space Name Direction Type Description buf8 OUT ViAUInt8 Data read from bus 8 bits for buf16 ViAUInt16 or viMovelIn8 16 bits for or ViAUInt32 viMovelIn16 and 32 bits for buf32 viMoveIn32 length IN ViBusSize Number of elements to transfer where the data width of the elements to transfer is 8 bits for viMoveIn8 16 bits for viMoveIn16 or 32 bits for viMoveIn32 offset IN ViBusAddress Offset in bytes of the starting address or regi
202. ces to instruments Chapter 6 Programming via LAN gives guidelines to use VISA to communicate over a LAN Local Area Network to instruments Chapter 7 VISA Language Reference provides an alphabetical reference of supported VISA functions Appendix A VISA Library Information lists VISA data types and their definitions VISA error codes and VISA directory information Appendix B VISA Resource Classes describes the six VISA Resource Classes including attributes events and operations Glossary includes a glossary of terms and their definitions Introduction 13 Introduction VISA Overview VISA Overview VISA is a part of the Agilent IO Libraries The Agilent IO Libraries consists of two libraries Agilent Virtual Instrument Software Architecture VISA and Agilent Standard Instrument Control Library SICL This guide describes VISA for supported Windows and HP UX environments For information on using SICL in Windows see the Agilent S CL User s Guide for Windows For information on using SICL in HP UX see the Agilent Standard Instrument Control Library User s Guide for HP UX For information on the Agilent IO Libraries see the Agilent IO Libraries Installation and Configuration Guide Using VISA and SICL Agilent Virtual Instrument Software Architecture VISA is an IO library designed according to the VXlplug amp play System Alliance that allows software developed from different vendors to run on the same system
203. character n The newline character in the format string flushes the output buffer to the device Chapter 4 53 Programming with VISA Sending I O Commands All characters in the output buffer will be written to the device with an END indicator included with the last byte the newline character This means you can control at what point you want the data written to the device If no newline character is included in the format string the characters converted are stored in the output buffer It will require another call to viPrintf viQueryf writeFmt or viFlush to have those characters written to the device This can be very useful in queuing up data to send to a device It can also raise I O performance by doing a few large writes instead of several smaller writes The while using the viScanf functions acts as an assignment suppression character The input is not assigned to any parameters and is discarded The grouping operator in a regular expression has the highest precedence the and operators in a regular expression have the next highest precedence after the grouping operator and the or operator in a regular expression has the lowest precedence Some example expressions follow the table Special Characters and Operators Description Matches any one character Makes the character that follows it an ordinary character instead of special character For example when a question mark follows a backslash e
204. code or an error code as follows Completion Code Description VI_SUCCESS Resource attribute retrieved successfully 198 Chapter 7 VISA Language Reference viGpibCommand Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start write operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed See Also INTFC Resource Description Chapter 7 199 VISA Language Reference viGpibControlATN viGpibControlATN Syntax viGpibControlATN ViSession Vi ViUInt16 mode Description Controls the state of the GPIB ATN interface line and optionally the active controller state of the local interface board This operation asserts or deasserts the GPIB ATN interface line according to the specif
205. d Appendix A 349 VISA Library Information VISA Error Codes Codes Description VI_ERROR_NSUP_ALIGN_OFFSET the specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viMoveOuts8 vi space offset length buf8 viMoveOut16 vi space offset length buf16 viMoveOut32 vi space offset length buf32 Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_LENGTH VI_ERROR_INV_OBJECT Invalid length specified The given object reference is invalid VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE VI_ERROR_NSUP_ALIGN_OFFSET Invalid address space specified the specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Speci
206. d VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SIZE Invalid size of window specified VI_ERROR_INV_SPACE Invalid address space specified VI_ERROR_NSUP_OFFSET VI_ERROR_NSUP_OPER VI_ERROR_RSRC_LOCKED Specified region is not accessible from this hardware The given vi does not support this function Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Could not acquire resource or perform mapping before the timer expired VI_ERROR_WINDOW_MAPPED The specified session already contains a mapped window 346 Appendix A VISA Library Information VISA Error Codes viMapTrigger vi trigSrc trigDest mode Codes Description VI_SUCCESS Operation completed successfully VI_SUCCESS_ TRIG MAPPED The path from trigSrc to trigDest is already mapped VI_ERROR_INV_LINE One of the specified lines trigSrc or trigDest is invalid VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_LINE_IN_USE One of the specified lines trigSrc or trigDest is in use VI_ERROR_NSUP_LINE One of the specified lines trigSrc or tri
207. d I O functions that are patterned after those viScanf used in the C programming language The viPrintf call sends the IEEE 488 2 RST command to the instrument and puts it in a known state The viPrintf call is used again to query for the device identification IDN The viScanf call is then used to read the results viClose This function must be used to close each session When you close a device session all data structures that had been allocated for the session will be deallocated When you close the default manager session all sessions opened using that default manager session will be closed 22 Chapter 2 Required Module for a Visual Basic VISA Program Installing the visa32 bas File VISA Limitations in Visual Basic Building a VISA Application in Windows Building a VISA Program Visual Basic Building a VISA Program Visual Basic This section gives guidelines to build a VISA program in the Visual Basic language including H Visual Basic Programming Considerations E Example VISA Program Visual Basic Visual Basic Programming Considerations Some considerations for programming in Visual Basic follow Before you can use VISA specific functions your application must add the visa32 bas VISA Visual Basic module found in one of the following directories assuming default installation directories For Windows 2000 NT C Program Files VISA winnt include For Windows 95 98 Me C Program Files VISA w
208. d in a base of eight form The number is of the form QYYY where YYY is an octal number e g Q71234 B d plus variants Converts to an IEEE 488 2 defined lt BINARY NUMERIC and only RESPONSE DATA gt The number is represented in a base two form The number is of the form BZZZ where ZZZ is a binary number e g B011101001 ANSI C Format Codes c Argument type A reference to a character White space in the device input stream is not ignored when using c Flags or Interpretation Modifiers Default A character is read from the device and stored in the functionality parameter field width field width number of characters are read and stored at the reference location the default field width is 7 No NULL character is added at the end of the data block d Argument type A reference to an integer Flags or Interpretation Modifiers Default Characters are read from the device until an entire number is functionality read The number read must be in one of the following IEEE 488 2 formats lt DECIMAL NUMERIC PROGRAM DATA also known as NRf Flexible numeric representation NR1 NR2 NR3 lt NON DECIMAL NUMERIC PROGRAM DATA gt H Q and B 274 Chapter 7 VISA Language Reference viScanf Flags or Interpretation Modifiers field width The input number will be stored in a field at least this wide Length modifier 1 arg is a reference t
209. d properties of the SERVANT supported capabilities of a device and a device s view of the system in which it exists TCPIP Socket SOCKET Generic TCPIP Operations and properties of a raw network socket connection using TCPIP Example Reading a VISA Attribute 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 you must declare a variable of that type and use it for the returned data If Vistring is returned you must allocate an array and pass a pointer to that array for the returned data This example reads the state of the VI_LATTR_TERMCHAR_EN attribute and changes it if it is not true ViBoolean state newstate newstate VI_ TRUE viGetAttribute vi VI_ATTR_TERMCHAR EN amp state if state err VI_TRUE viSetAttribute vi VI_ATTR_TERMCHAR EN newstate
210. d synchronously Chapter 7 229 VISA Language Reference viMoveAsync Error Codes Description VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_OBJECT both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_QUEUE Unable to queue move operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also viMove Also see the INSTR and MEMACC Resource descriptions 230 Chapter 7 Syntax Description VISA Language Reference viMoveln8 viMoveln16 and viMoveln32 viMoveln8 viMoveln16 and viMoveln32 viMovelIn8 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt8 buf8 viMoveIn16 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt16 buf716 viMovelIn32 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt32 buf32 This function moves an 8 bit 16 bit or 32 bit block of data from the specified memory space assigned memory base offset to local memory This function reads the 8 bit 16 bit or 32 bit value from the address space pointed to by space The offset must be a valid memory address in the space These functions do not require viMapAddress to be called prior to their invocation If the viSession parameter vi refers to an INSTR session t
211. de lt visa h gt include lt stdio h gt void main ViSession defaultRM vi char strres 20 unsigned long actual Open session to GPIB device at address 22 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIBO 22 INSTR VI _NULL VI_ NULL amp vi Initialize device viWrite vi ViBuf RST n 5 amp actual Set up device and take measurement viWrite vi ViBuf CALC DBM REF 50 n 16 amp actual viWrite vi ViBuf MEAS VOLT AC 1 0 001 n 23 amp actual Read results viRead vi ViBuf strres 20 amp actual 60 Chapter 4 NULL terminate the string strres actual 0 Print results printf Measurement Results s n Close session viClose vi viClose defaultRM Chapter 4 Programming with VISA Sending I O Commands strres 61 Event Notification Programming with VISA Using Events and Handlers Using Events and Handlers This section gives guidelines to use events and handlers including E Events and Attributes H Using the Callback Method E Using the Queuing Method Events and Attributes Events are special occurrences that require attention from your application Event types include Service Requests SRQs interrupts and hardware triggers Events will not be delivered unless the appropriate events are enabled NOTE VISA cannot callback to a Visual Basic function Thus you can only use t
212. de Generation from the Category list box and select Multi Threaded using DLL fromthe Use Run Time Libraries list box VISA requires these definitions for Win32 Click OK to close the dialog boxes Chapter 2 19 Building a VISA Application in Windows Building a VISA Program C C 4 Select Project Settings from the menu Click the Link button and add visa32 lib to the Object Library Modules list box Optionally you may add the library directly to your project file Click OK to close the dialog boxes 5 You may want to add the include file and library file search paths They are set by Q Select Tools Options from the menu 0 Click the Directories button to set the include file path Q Select Include Files from the Show Directories For list box Q Click the Add button and type one of the following C Program Files VISA WIN95 INCLUDE OR C Program Files VISA WINNT INCLUDE 6 Select Library Files from the Show Directories For list box 7 Click the Add button and type one of the following C Program Files VISA WIN95 LIB MSC OR C Program Files VISA WINNT LIB MSC Borland C You may want to add the include file and library file search paths They Version 4 0 are set under the Options Project menu selection Double click Compilers Directories from the Topics list box and add one of the following C Program Files VISA WIN95 INCLUDE C Program Files VISA WIN95 LIB BC OR C Program Files VISA WINNT INCLUDE C Program
213. ds High Level block memory I O viMoveIn16 The viMovelIn viMoveOut commands do both block read write and FIFO read write These commands offer the best performance for reading and writing large data blocks on the VXI backplane For this example we ar only moving 2 words at a time Normally these functions would be used to move much larger blocks of data If the value of VI_ATTR_SRC_INCREMENT is 1 the default viMovelIn does a block read If the value of VI_ATTR_SRC_INCREMENT is 0 viMovelIn does a FIFO read If the value of VI_ATTR_DEST INCREMENT is 1 the default viMoveOut does a block write If the value of VI_ATTR_ DEST INCREMENT is 0 viMoveOut does a FIFO write Demonstrate block read Read instrument id register and device type register into an array viMoveInl6 vi VI_Al6 SPACE 0x00 2 memArray Print results printf viMovelInl6 ID Register 0x 4X n memArray 0 printf viMoveInl6 Device Type Register 0x 4X n memArray 1 Demonstrate FIFO read First set the source increment to 0 so we will repetitively read from the same memory location viSetAttribute vi VI_ATTR_SRC_INCREMENT 0 Do a FIFO read of the Id Register viMovelInl6 vi VI_Al6 SPACE 0x00 2 memArray Print results printf viMovelInl6 1 ID Register 0x 4X n memArray 0
214. e OR of the values Must use VI_NULL in VISA 1 0 timeout If the accessMode parameter requires a lock this parameter specifies the absolute time period in milliseconds that the resource waits to get unlocked before this operation returns an error Otherwise this parameter is ignored Must use VI_NULL in VISA 1 0 vi This is a pointer to the session identifier for this particular resource session This pointer will be used to identify this resource session when using other VISA functions Example Opening a Resource Session This example shows one way of opening resource sessions with a GPIB multimeter and a GPIB VXI scanner The example first opens a session with the default resource manager The session returned from the resource manager and a resource address is then used to open a session with the GPIB device at address 22 That session will now be identified as dmm when using other VISA functions The session returned from the resource manager is then used again with another resource address to open a session with the GPIB VXI device at primary address 9 and VXI logical address 24 That session will now be identified as scanner when using other VISA functions See Addressing a Session for information on addressing particular devices ViSession defaultRM dmm scanner viOpenDefaultRM amp defaultRM viOpen defaultRM GPIBO 22 INSTR VI_ NULL VI_NULL amp dmm viOpen defaultRM GPIB
215. e VISA path information A typical display follows Agilent IO Libraries Installation and Path Information Version K 01 00 00 Agilent SICL Installed Agilent VISA Installed as primary VISA non Agilent VISA Not Installed SICL Path C Program Files Agilent IO Libraries VISA Path C Program Files VISA Registry Path HKEY_LOCAL_MACHINE SOFTWARE Agilent IO Libraries CurrentVersion 368 Appendix A HP UX Directory Structure VISA Library Information VISA Directories Information VXIPNPPATH m KBASE WIN95 BIN LIB BC MSC INCLUDE AGVISA L SAMPLES lt INSTRUMENT gt WINNT BIN LIB BC MSC INCLUDE AGVISA L SAMPLES K lt INSTRUMENT gt iy The VXIplug amp play alliance defines a directory structure to be used with the UNIX system framework VISA is automatically installed into the following directory structure on HP UX 10 20 The opt is an optional path that you can change during the software installation Appendix A 369 Editing on Windows 95 98 Me 2000 NT VISA Library Information VISA Directories Information N L vxipnp kbase hpux bin lib include hpvisa Ls share lt instrument gt examples man Kes help E Editing the VISA Configuration When the Agilent IO Libraries are configured certain values are used as defaults in the VISA configuration In some cases the defau
216. e Name and Logical Unit Number to the interface hardware and other necessary configuration values for an interface when the interface is configured See the Agilent IO Libraries Installation and Configuration Guide for Windows for IO Config information When using GPIB VXI or VXI interfaces to directly access the VXI backplane in the VXI mainframe you must know whether you are programming a message based or a register based VXI device instrument A message based VXI device has its own processor that allows it to interpret high level commands such as Standard Commands for Programmable Instruments SCPI When using VISA you can place the SCPI command within your VISA output function call Then the message based device interprets the SCPI command In this case you can use the VISA formatted I O or non formatted I O functions and program the message based device as you would a GPIB device Chapter 5 95 Programming via GPIB and VXI GPIB and VXI Interfaces Overview However if the message based device has shared memory you can access the device s shared memory by doing register peeks and pokes VISA provides two different methods you can use to program directly to the registers high level memory functions or low level memory functions A register based VXI device typically does not have a processor to interpret high level commands Therefore the device must be programmed with register peeks and pokes directly to the device s registers
217. e Query operation The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt or readFmt string is invalid VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_IO VI_ERROR_NSUP_FMT Could not perform read write operation because of I O error The format specifier is not supported for current argument type VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout occurred before read write operation completed viRead vi buf count retCount Codes Description VI_SUCCESS The operation completed successfully and the END indicator was received for interfaces that have END indicators VI_SUCCESS TERM CHAR The specified termination character was read VI_SUCCESS MAX CNT The number of bytes read is equal to count VI_ERROR_ASRL_FRAMING A framing error occurred during transfer 354 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_ASRL_OVERRUN An overrun error occurred during transfer A character was not read from the hardware before the next character arrived VI_ERROR_ASRL_PARITY A parity error occurred during transfer
218. e an integer representing the array size of the given type 1 d plus variants Converts to an IEEE 488 2 defined NR1 compatible number and only which is an integer without any decimal point e g 123 2 d plus variants Converts to an IEEE 488 2 defined NR2 compatible number and only The NR2 number has at least one digit after the decimal point e g 123 45 3 d plus variants Converts to an IEEE 488 2 defined NR3 compatible number and only An NR3 number is a floating point number represented in an exponential form e g 1 2345E 67 H d plus variants Converts to an IEEE 488 2 defined lt HEXADECIMAL ands only NUMERIC RESPONSE DATA gt The number is represented in a base of sixteen form Only capital letters should represent numbers The number is of the form HXXX where XXX is a hexadecimal number e g HAF35B eQ d plus variants Converts to an IEEE 488 2 defined lt OCTAL NUMERIC and f only RESPONSE DATA gt The number is represented in a base of eight form The number is of the form QYYY where YYY is an octal number e g Q71234 B d plus variants Converts to an IEEE 488 2 defined lt BINARY NUMERIC and f only RESPONSE DATA gt The number is represented in a base two form The number is of the form BZZZ where ZZZ is a binary number e g B011101001 Chapter 7 253 VISA Language Reference viPrintf The following are the allowed format code
219. e mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_NSUP_INTR The given session or object reference is invalid both are the same value The interface cannot generate an interrupt on the requested level or with the requested status D value VI_ERROR_NSUP_MODE The specified mode is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viAssertTrigger vi protocol Codes Description VI_SUCCESS Specified trigger was successfully asserted to the device VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INP_PROT_VIOL Device reported an input protocol error during transfer VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_PROT The protocol specified is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_LINE_IN_USE The specified trigger line is currently in use 336 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_NCIC vi does not refer to an interface that is currently the c
220. e session on which the handler will be installed eventType The event type that will activate the handler handler The name of the handler to be called userHandle A user value that uniquely identifies the handler for the specified event type The userHandle parameter allows you to assign a value to be used with the handler on the specified session Thus you can install the same handler for the same event type on several sessions with different userHandle values The same handler is called for the specified event type However the value passed to userHandle is different Therefore the handlers are uniquely identified by the combination of the handler and the userHandle This may be useful when you need a different handling method depending on the userHandle This example shows how to install an event handler to call my_hand ler when a Service Request occurs Note that VI_EVENT_SERVICE_REQ must also be an enabled event with the viEnableEvent function for the service request event to be delivered vilnstallHandler vi VI_EVENT SERVICE REQ my handler addr Use the viUninstallHandler function to uninstall a specific handler Or you can use wildcards VI_ANY_HNDLR in the handler parameter to uninstall groups of handlers See viUninstallHandler in Chapter 7 VISA Language Reference for more details on this function The handler installed needs to be written by the programmer The event handler typically
221. e specified is read only VI_ERROR_BERR A bus error occurred during transfer VI_ERROR_CLOSING_FAILED Unable to deallocate the previously allocated data structures for this session VI_ERROR_CONN_LOST A TCP connection is dropped as a result of keep alives packets VI_ERROR_FILE_ ACCESS An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights VI_ERROR_FILE_IO An error occurred while accessing the specified file VI_ERROR_HNDLR_NINSTALLED A handler is not currently installed for the specified event The session cannot be enabled for the VI_HNDLR mode of the callback mechanism 332 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_INP_PROT_VIOL Input protocol error occurred during transfer VI_ERROR_INTF_NUM_NCONFIG The interface type is valid but the specified interface number is not configured VI_ERROR_INTR_PENDING An interrupt is still pending from a previous call VI_ERROR_INV_ACC_MODE The access mode specified is invalid VI_ERROR_INV_ACCESS_KEY The requestedKey value passed in is not a valid access key to the specified resource VI_ERROR_INV_CONTEXT The event context specified is invalid VI_ERROR_INV_DEGREE The specified degree is invalid VI_ERROR_INV_EVENT The event type specified is invalid for the specif
222. e vivPrint and vivScanf functions The viQueryf function sends and receives separate arg parameters while the vivQueryf function sends and receives a list of parameters in params viQueryf vi writeFmt readFmt arg1 arg2If vivgueryf vi writeFmt readFmt params The formatted I O functions convert data under the control of the format string The format string specifies how the argument is converted before it is input or output The format specifier sequence consists of a percent followed by an optional modifier s followed by a format code modifiers format code Zero or more modifiers may be used to change the meaning of the format code Modifiers are only used when sending or receiving formatted I O To send formatted I O the asterisk can be used to indicate that the number is taken from the next argument 50 Chapter 4 Example Using Field Width Modifier Programming with VISA Sending I O Commands However when the asterisk is used when receiving formatted I O it indicates that the assignment is suppressed and the parameter is discarded Use the pound sign when receiving formatted I O to indicate that an extra argument is used The following are supported modifiers See the viPrintf function in Chapter 7 VISA Language Reference for additional enhanced modifiers 1 2 3 H Q or B E Field Width Field width is an optional integer that specifies how many characters are in the field
223. ead is stored in the buffer represented by buf This function returns only when the transfer terminates Only one synchronous read function can occur at any one time A viRead operation can complete successfully if one or more of the following conditions were met E END indicator received E Termination character read E Number of bytes read is equal to count It is possible to have one two or all three of these conditions satisfied at the same time NOTE You must set specific attributes to make the read terminate under specific conditions See Appendix B VISA Resource Classes Parameters Name __ Direction Type Description buf OUT ViBuf Represents the location of a buffer to receive data from device count IN ViUInt32 Number of bytes to be read retCount OUT ViUInt32 Represents the location of an integer that will be set to the number of bytes actually transferred vi IN ViSession Unique logical identifier to a session Chapter 7 261 Return Values VISA Language Reference viRead Special Value for retCount Parameter Value Description VI_NULL Do not return the number of bytes transferred Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS The function completed successfully and the END indicator was received for interfaces that have END indicators
224. easurement Results 1f n res Close session viClose vi viClose defaultRM 142 Chapter 6 Client Server Operation LAN Timeout Values Programming via LAN Communicating with GPIB Devices via LAN Using Timeouts over LAN The client server architecture of the LAN software requires the use of two timeout values one for the client and one for the server The server s timeout value is specified by setting a VISA timeout via the VI_ATTR_TMO_ VALUE attribute The server will also adjust the requested value if infinity is requested The client s timeout value is determined by the values set when you configure the LAN Client during the Agilent IO Libraries configuration See the Agilent IO Libraries Installation and Configuration Guide for configuration information When the client sends an I O request to the server the timeout value determined by the values set with the VI_LATTR_TMO_ VALUE attribute is passed with the request The client may also adjust the value sent to the server if VI_TMO_INFINITE was specified The server will use that timeout in performing the I O operation just as if that timeout value had been used on a local I O operation If the server s operation is not complete in the specified time the server will send a reply to the client which indicates that a timeout occurred and the VISA call made by the application will return an error When the client sends an I O request to the server it starts
225. ecified viPoke32 vi addr val32 Writes 32 bits of data to address specified viUnmapAddress vi Unmaps memory space previously mapped When using VISA to access the device s registers you must map memory space into your process space For a given session you can have only one map at a time To map space into your process use the VISA viMapAddress function viMapAddress vi mapSpace mapBase mapSize access suggested address This function maps space for the device specified by the vi session mapBase mapSize and suggested are used to indicate the offset of the memory to be mapped amount of memory to map and a suggested starting location respectively mapSpace determines which memory location to map the space The following are valid mapSpace choices VI_A16_SPACE Maps in VXI MXI A16 address space VI_A24_SPACE Maps in VXI MXI A24 address space VI_A32_SPACE Maps in VXI MXI A32 address space A pointer to the address space where the memory was mapped is returned in the address parameter If the device specified by vi does not have memory in the specified address space an error is returned Some example viMapAddress function calls are Maps to A32 address space viMapAddress vi VI_A32 SPACE 0x000 0x100 VI FALSE VI_NULL amp address Maps to A24 address space viMapAddress vi VI_A24 SPACE 0x00 0x80 VI FALSE VI_NULL address 108 Chapter 5
226. ecified access mode was successfully acquired VI_SUCCESS_NESTED EXCLUSIVE The specified access mode was successfully acquired and this session has nested exclusive locks VI_SUCCESS NESTED SHARED The specifed access mode was successfully acquired and this session has nested shared locks VI_ERROR_INV_ACCESS KEY The requestedKey value passed is not a valid access key to the specified resource VI_ERROR_INV_LOCK_TYPE The specified type of lock is not supported by this resource VI_ERROR_INV_OBJECT The given object reference is invalid Appendix A 345 VISA Library Information VISA Error Codes Codes Description VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_RSRC_LOCKED The specified type of lock cannot be obtained because the resource is already locked with a lock type incompatible with the lock requested VI_ERROR_TMO The specified type of lock could not be obtained within the specified timeout period viMapAddress vi mapSpace mapBase mapSize access suggested address Codes Description VI_SUCCESS Map successful VI_ERROR_ALLOC Unable to allocate window of at least the requested size VI_ERROR_INV_ACC_MODE Invalid access mode VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_OFFSET VI_ERROR_INV_SESSION Invalid offset specified The given session is invali
227. econd program uses the GPIB VXI interface to access the VXI backplane These two programs are identical except for the string passed to viOpen This program uses low level memory functions and the VXI interface to read the ID and Device Type registers of a device at VXI0 24 vxill c This example program uses the low level memory functions to read the id and device type registers of the device at VX1I0 24 Change this address if necessary The register contents are then displayed Chapter 5 109 Programming via GPIB and VXI Using Low Level Memory Functions include lt visa h gt finclude lt stdlib h gt finclude lt stdio h gt void main ViSession defaultRM dmm ViAddr address unsigned short id_reg devtype reg Open session to VXI device at address 24 viOpenDefaultRM amp defaultRM viOpen defaultRM VXI0 24 INSTR VI NULL VI _ NULL amp dmm Map into memory space viMapAddress dmm VI_Al6 SPACE 0x00 0x10 VI_FALSE VI_NULL amp address Read instrument id register contents viPeek16 dmm address amp id_ reg Read device type register contents ViAddr is defined as a void so we must cast it to something else to do pointer arithmetic viPeek16 dmm ViAddr ViUInt16 address 0x01 amp devtype reg Unmap memory space viUnmapAddress dmm Print results printf ID Register 0x 4X n id reg printf Dev
228. ed Enhanced Modifiers to ANSI C Standards Modifier Supported with Description Format Codes A comma d plus The corresponding argument is interpreted as a reference to the followed by an variants and first element of an array of size n The first n elements of this list are integer n only printed in the format specified by the conversion character where n represents the A number sign may be present after the modifier in which array size case an extra arg is used This arg must be an integer representing the array size of the given type 1 d plus variants Converts to an IEEE 488 2 defined NR1 compatible number which and only is an integer without any decimal point e g 123 2 d plus variants Converts to an IEEE 488 2 defined NR2 compatible number The and only NR2 number has at least one digit after the decimal point e g 123 45 Chapter 7 273 VISA Language Reference viScanf Modifier Supported with Description Format Codes H d plus variants Converts to an IEEE 488 2 defined lt HEXADECIMAL NUMERIC and only RESPONSE DATA gt The number is represented in a base of sixteen form Only capital letters should represent numbers The number is of the form HXXX where XXX is a hexadecimal number e g HAF35B eQ d plus variants Converts to an IEEE 488 2 defined lt OCTAL NUMERIC and f only RESPONSE DATA gt The number is represente
229. ed See Also viVPrintf 258 Chapter 7 Syntax Description Parameters VISA Language Reference viQueryf viQueryf viQueryf ViSession vi ViString writeFmt viString readFmt arg1 arg2 This function performs a formatted write and read through a single operation invocation This function provides a mechanism of Send then receive typical to a command sequence from a commander device In this manner the response generated from the command can be read immediately This function is a combination of the viPrint and viScanf functions The first n arguments corresponding to the first format string are formatted by using the writeFmt string and then sent to the device The write buffer is flushed immediately after the write portion of the operation completes After these actions the response data is read from the device into the remaining parameters starting from parameter n 7 using the readFmt string This function returns the same VISA status codes as viPrintf viScanf and viFlush VISA functions that take a variable number of parameters e g viPrintf viScanf and viQueryf are not callable from Visual Basic Use the corresponding vivPrintf viVScanf and vivQueryf functions instead Name Direction Type Description arg1 arg2 IN OUT N A Parameters on which write and read format strings are applied readFmt IN ViString ViString describing the format of the read arguments vi IN ViSession
230. ed viPeek viPoke calls do not return status codes Only one active viMapAddress is allowed per vi session E There may be a limit to the number of simultaneous active viMapAddress Calls per process or system 112 Chapter 5 Programming via GPIB and VXI Using Low High Level Memory I O Methods Using High level viln viOut High level viIn viOut calls are best in situations where a few widely scattered memory access are required and speed is not a major consideration The advantages high level viIn viOut are H Simplest method to implement E No limit on number of active maps E A16 A24 and A32 memory access can be mixed in a single vi session The disadvantage of high level viIn viOut calls is that they are slower than viPeek viPoke Using High level viMoveln viMoveOut High level viMoveIn viMoveOut Calls provide the highest possible performance for transferring blocks of data to or from the VXI backplane Although these calls have higher initial overhead than the viPeek viPoke calls they are optimized on each platform to provide the fastest possible transfer rate for large blocks of data For small blocks the overhead associated with viMoveIn voMoveOut may actually make these calls longer than an equivalent loop of viIn viOut calls The block size at which viMoveIn viMoveOut becomes faster depends on the particular platform and processor speed The advantages of high level viMoveIn viMoveOut are E Simple to use E
231. eeeeeeees 420 SOCKET Resource Attributes 00 0 0 ccccesecesestssesereeeeeees 420 SOCKET Resource Attribute Descriptions 6 422 SOCKET Resource Event sorire enhn i EAE 423 SOCKET Resource Operations c cceseeeeeeeeceeeeeeeeeees 424 GOSS A E 425 OOR anria a 431 Contents 8 Notice The information contained in this document is subject to change without notice Agilent Technologies shall not be liable for any errors contained in this document Agilent Technologies makes no warranties of any kind with regard to this document whether express or implied Agilent Technologies specifically disclaims the implied warranties of merchantability and fitness for a particular purpose Agilent Technologies shall not be liable for any direct indirect special incidental or consequential damages whether based on contract tort or any other legal theory in connection with the furnishing of this document or the use of the information in this document Warranty Information A copy of the specific warranty terms applicable to your Agilent Technologies product and replacement parts can be obtained from Agilent Technologies Inc U S Government Restricted Rights The Software and Documentation have been developed entirely at private expense They are delivered and licensed as commercial computer software as defined in DFARS 252 227 7013 Oct 1988 DFARS 252 211 7015 May 1991 or DFARS 252 227 7014 Jun 1995 a
232. el service There is no need to explicitly map the memory to a window Low level Memory I O services also allow register level access to the interfaces that support direct memory access Before an application can use the low level service on the interface bus it must map a range of addresses using the operation viMapAddress Although the resource handles the allocation and operation of the window the programmer must free the window via viUnMapAddress when finished This makes the window available for the system to reallocate Chapter 5 117 Example MEMACC Resource Program Programming via GPIB and VXI Using the Memory Access Resource This program demonstrates one way to use the MEMACC resource to open the entire VXI A16 memory and then calculate an offset to address a specific device peekl6 c include lt stdio h gt finclude lt stdlib h gt finclude lt visa h gt define EXIT 1 define NO EXIT 0 This function simplifies checking for VISA errors voidcheckError ViSessionvi ViStatus status char errStr int doexit char buf 256 status gt VI SUCCESS if retu buf 0 viStat printft buf if doexit exit 1 rn e void main ViSession drm ViSession vi ViUInt16 ViUInt16 ViUInt8 ViUInt16 ViStatus ViUInt16 pee sta status checkError 0 Open a session to the VXI M viOpen drm amp vi status checkErr
233. elif defined WINDOWS include lt io h gt for wyield define YIELD _wyield else include lt unistd h gt define YIELD sleep 1 endif int srqOccurred trigger event handler ViStatus VI FUNCH mySrqHdlr ViSession vi ViEventType eventType ViEvent ctx ViAddr userHdlLr ViUInt16 statusByte make sure it is an SRQ event if eventType VI_ EVENT SERVICE REQ Stray event so ignore printf nStray event of type O0x lx n eventType return VI SUCCESS print the event information printf nSROQ Event Occurred n printf Original Device Session ld n vi get the sta tus byte viReadSTB vi printf Sta amp statusByte tus byte is O0x x n srqOccurred 1 return VI SUCCESS Chapter 4 statusByte 75 Programming with VISA Using Events and Handlers void main ViSession defaultRM vi long count open session to message based VXI device viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB VXI0 24 INSTR VI NULL VI NULL amp vi Enable command error events viPrintf vi ESE 32 n Enabl vent register interrupts viPrintf vi SRE 32 n install the handler and enable it vilInstallHandler vi VI_EVENT SERVICE REQ mySrqHdlr ViAddr 10 viEnableEvent vi VI_EVENT SERVICE REQ VI_HNDLR VI_NULL srqOccurred 0
234. ence viSPrintf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient system resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access See Also viPrintf 286 Chapter 7 VISA Language Reference viSScanf Le viSScanf Syntax viSScanf ViSession Vi ViBuf buf viString readFmt arg1 arg2 Description This operation receives data from a user specified buffer formats it by using the format string and stores the data in the arg parameter list The format string can have format specifier sequences white space characters and ordinary characters This function is the same as viScanf except data are read from a user specified buffer instead of a device Parameters Name Direction Type Description arg1 arg2 OUT N A A list with the variable number of parameters into which the data are read and the format string is applied buf IN ViBuf Buffer from which data are read and formatted readFmt IN viString The format string to apply to parameters in Vi
235. ened on the default resource manager and then for each resource you will be using E A resource manager session is used to initialize the VISA system It is a parent session that knows about all the opened sessions A resource manager session must be opened before any other session can be opened Chapter 4 41 Resource Manager Sessions Resource Sessions Programming with VISA Using Sessions E A resource session is used to communicate with a resource on an interface A session must be opened for each resource you will be using When you use a session you can communicate without worrying about the type of interface to which it is connected This insulation makes applications more robust and portable across interfaces There are two parts to opening a communications session with a specific resource First you must open a session to the default resource manager with the viOpenDefaultRM function The first call to this function initializes the default resource manager and returns a session to that resource manager session You only need to open the default manager session once However subsequent calls to viOpenDefaultRM returns a unique session to the same default resource manager resource Next you open a session with a specific resource with the viOpen function This function uses the session returned from viOpenDefaultRM and returns its own session to identify the resource session The following shows the function syntax
236. ening 42 directories VISA 368 directory structure HP UX 369 DLLs building 19 Index Index E enable events for callback 72 enable events for queuing 78 error codes 331 336 error messages logging 29 error messages logging on HP UX 35 event handler 71 Event Viewer using 29 events 62 callback 62 69 enable for callback 72 enable for queuing 78 handlers 62 hardware triggers 62 interrupts 62 queuing 62 77 SRQs 62 wait on event 78 examples Checking for VI_SUCCESS 82 Checking Instrument Errors 83 Determining Window Mapping 124 Enable Hardware Trigger Event 72 78 Example Source Code C C 21 Example Source Code HP UX 33 Example Source Code VB 26 Exception Events 85 Exclusive Lock 89 GPIB 82350 Interface 97 GPIB VXI E1406A Interface 101 GPIB VXI HL Memory 105 GPIB VXI LL Memory 111 Installing an Event Handler 71 LAN Client Gateway Interface 134 LAN Client LAN Interface 135 LAN Server Interface 140 LAN Session 142 MEMACC Resource Program 118 Non Formatted I O Functions 60 431 E continued examples cont d Opening Device Session 141 Opening Resource Session 43 Opening Session 46 Printing Error Code 82 Reading a VISA Attribute 40 Reading Event Attributes 69 Receive Data From Session 57 Running Program on HP UX 34 Searching VXI Interface 48 Send Rec Formatted I O 58 SRQ Callback 74 Trigger Callback 73 Trigger Event Queuing 79
237. ent This resource defines the following events for communication with applications where AP Access Privilege VI_LEVENT_IO_COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed Appendix B 423 VISA Resource Classes TCPIP Socket SOCKET Resource Event Attributes Description AP Data Type Range VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation VI_ATTR_RET COUNT Actual number of elements RO viUInt32 0 to FFFFFFFF that were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation RO viString N A generating the event SOCKET Resource Operations viAssertTrigger vi protocol viBufRead vi buf count retCount viBufWrite vi buf count retCount viClear vi viFlush vi mask viPrint vi writeFmt arg1 arg2 viRead vi buf count retCount viReadAsync vi buf count jobld viReadSTB vi status viReadToFile vi filename count retCount viScanf vi readFmt arg1 arg2 viSetBuf vi mask size viSPrintf vi buf
238. ent state VI_ERROR_INV_SPACE VI_ERROR_NSUP_ALIGN_ OFFSET Invalid address space specified The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also 236 viMoveln8 viMoveln16 viMoveln32 viOut8 viOut16 viOut32 Chapter 7 Syntax Description Parameters viOpen VISA Language Reference viOpen viOpen ViSession sesn ViRsre rsrcName ViAccessMode accessMode ViUInt32 timeout ViSession Vi This function opens a session to the specified device It returns a session identifier that can be used to call any other functions to that device Name Direction Type Description accessMode IN ViAccessMode Specifies the modes by which the resource is to be accessed The value VI_EXCLUSIVE_LOCK is used to acquire an exclusive lock immediately upon opening a session If a lock cannot be acquired the session is closed and an error is returned The VI_LOAD CONFIG value is used to configure attributes specified by some external configuration utility If this value is no
239. ent type A reference to a string Flags or Interpretation Modifiers Default Characters are read from the device until the first END indicator functionality is received The character on which the END indicator was received is included in the buffer field width This flag gives the maximum string size If an END indicator is not received before field width number of characters additional characters are read and discarded until an END indicator arrives field width has the same meaning as in s Chapter 7 277 VISA Language Reference viScanf T Argument type A reference to a string Flags or Interpretation Modifiers Default Characters are read from the device until the first linefeed functionality character n is received The linefeed character is included in the buffer field width This flag gives the maximum string size If a linefeed character is not received before field width number of characters additional characters are read and discarded until a linefeed character arrives field width has the same meaning as in s Argument Type A location of block binary data Flag or Modifier Interpretation Default functionality The data block is read as raw binary data The format specifier sequence should have a flag describing the array size which will give a maximum count of the number of bytes or words or longwords depending on length modifiers to be read fr
240. entified by vi has been locked for this kind of access viWriteFromFile vi fileName count retCount Codes Description VI_SUCCESS Transfer completed VI_ERROR_BERR VI_ERROR_CONN_LOST VI_ERROR_FILE_ ACCESS Bus error occurred during transfer The I O connection for the given session has been lost An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights VI_ERROR_FILE_ACCESS VI_ERROR_FILE_IO An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights An error occurred while accessing the specified file VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC VI_ERROR_NLISTENERS The interface associated with the given vi is not currently the controller in charge No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_OUTP_PROT_VIOL Device reported an input protocol error during transfer VI_ERROR_RAW RD _PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW_RW_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specif
241. ents If this attribute is set to 0 the viMoveInxx operation will always read from the same element essentially treating the source as a FIFO register 386 Appendix B VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description VXI and GPIB VXI Specific INSTR Resource Attributes continued VI_ATTR_DEST_INCREMENT This is used in the viMoveOutxXx operation to specify how much the destination offset is to be incremented after every transfer The default value of this attribute is 1 that is the destination address will be incremented by 1 after each transfer and the viMoveOutxx operation moves into consecutive elements If this attribute is set to 0 the viMoveOutxx operation will always write to the same element essentially treating the destination as a FIFO register VI_ATTR_WIN_ACCESS VI_ATTR WIN BASE ADDR Modes in which the current window may be accessed not currently mapped through operations viPeekxx and viPokexx only or through operations and or by directly dereferencing the address parameter as a pointer Base address of the interface bus to which this window is mapped VI_ATTR_WIN_SIZE Size of the region mapped to this window VI_ATTR_SRC_BYTE_ORDER VI_ATTR_DEST_BYTE_ ORDER This attribute specifies the byte order to be used in high level access operations such as viInXxX and viMoveInxx when reading from the source This attribute specifi
242. er contents ViAddr is defined as a void so we must cast it to something else in order to do pointer arithmetic 114 Chapter 5 Programming via GPIB and VXI Using Low High Level Memory I O Methods viPeek16 vi ViAddr ViUInt16 address 0x01 amp devtype reg Print results printf viPeek16 ID Register 0x 4X n id reg printf 7 viPeek16 Device Type Register 0x 4X n devtype_reg Use direct memory dereferencing if supported viGetAttribute vi VI_ATTR_WIN ACCESS amp accessMode if accessMode VI_DEREF ADDR assign pointer to variable of correct type memPtrl6 unsigned short address do the actual memory reads id reg memPtr16 devtype reg memPtrl6 1 Print results printf dereference ID Register 0x 4X n id_ reg 3 printf dereference Device Type Register 0x 4X n devtype reg Unmap memory space viUnmapAddress vi High Level memory I O vilInl6 9 Read instrument id register contents viInl6 vi VI_A16 SPACE 0x00 amp amp id_ reg Read device type register contents vilInl6 vi VI_Al6 SPACE 0x02 amp devtype reg Print results printf viInl6 ID Register 0x 4X n id reg printf vilInl6 Device Type Register 0x 4X n devtype reg Chapter 5 115 Programming via GPIB and VXI Using Low High Level Memory I O Metho
243. erface associated with the session specified by vi is currently the system controller An INSTR resource implementation of viGpibContro1REN for a GPIB System supports all documented modes An INTFC resource implementation of viGpibControl1REN for a GPIB System supports the modes VI_GPIB_REN DEASSERT VI_GPIB_REN_ASSERT and VI_GPIB_REN ASSERT_LLO Name _ Direction Type Description mode IN ViUInt16 Specifies the state of the REN line and optionally the device remote local state vi IN ViSession Unique logical identifier to a session Special Values for mode Parameter mode Action Description VI_GPIB_REN ADDRESS GTL Send the Go To Local command GTL to this device VI_GPIB_REN_ASSERT Assert REN line VI_GPIB_ REN ASSERT ADDRESS Assert REN line and address this device VI_GPIB_ REN ASSERT _ADDRESS_ Address this device and send it LLO LLO putting it in RWLS VI_GPIB_REN_ASSERT_LLO Send LLO to any devices that are addressed to listen 202 Chapter 7 Return Values VISA Language Reference viGpibControlREN mode Action Description VI_GPIB_REN DEASSERT Deassert REN line VI_GPIB_REN DEASSERT_GTL Send the Go To Local command GTL to this device and deassert REN line Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS
244. ering RO ViInt16 VI_TRIG TTLO to ID mechanism on which the VI_TRIG TTL7 specified trigger event was VI_TRIG_ECLO to received VI_TRIG_ ECL1 VI_EVENT_VXI_VME_SYSFAIL Notification that the VXI VME SYSFAIL line has been asserted Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_vVxI_ event VME_SYSFAIL VI_EVENT_VXI_VME_SYSRESET Notification that the VXIVME SYSRESET line has been reset Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_VXI_ VME_SYSRESET TCPIP Socket SOCKET Resource Event VI_EVENT IO COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_EVENT_IO_ event COMPLETION VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed 68 Chapter 4 Programming with VISA Using Events and Handlers TCPIP Socket SOCKET Resource Event VI_EVENT_IO_ COMPLETION Notification that an asynchronous operation has completed Event Attributes Description AP Data Type Range VI_ATTR_JOB_ID Job ID of the asynchronous RO ViJobId N A operation that has completed VI_ATTR_BUFFER VI_AT
245. erpretation of the status code passed to the function Must be at least 256 characters to receive output status IN viStatus Status code to interpret vi IN ViSession Unique logical identifier to a session event ViEvent or find list ViFindList Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Description successfully returned VI_WARN_UNKNOWN_STATUS The status code passed to the function could not be interpreted Chapter 7 289 Syntax Description Parameters Return Values VISA Language Reference viTerminate vilerminate viTerminate ViSession vi ViUInt16 degree ViJobId jobld NOTE This function is not implemented in Agilent VISA since all I O is done synchronously This function requests a VISA session to terminate normal execution of an operation This operation requests a session to terminate normal execution of an operation as specified by the job d parameter The job d parameter is a unique value generated from each call to an asynchronous operation If a user passes VI_NULL as the job d value to viTerminate a VISA implementation should abort any calls in the current process executing on the specified vi Any call that is terminated this way should return VI_ERROR_ABORT Due to the nature of multi threaded systems for example whe
246. es the byte order to be used in high level access operations such as viOutXxX and viMoveOutxXx when writing to the destination VI_ATTR_WIN_ BYTE ORDER VI_ATTR_SRC_ACCESS_PRIV This attribute specifies the byte order to be used in low level access operations such as viMapAddress viPeekxx and viPokexXx when accessing the mapped window This attribute specifies the address modifier to be used in high level access operations such as viInXxX and viMoveInxx when reading from the source VI_ATTR_DEST_ACCESS_PRIV This attribute specifies the address modifier to be used in high level access operations such as viOutXX and viMoveOutxx when writing to the destination VI_ATTR_ WIN ACCESS _PRIV This attribute specifies the address modifier to be used in low level access operations such as viMapAddress viPeekxXx and viPokexx when accessing the mapped window Appendix B 387 VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description VXI and GPIB VXI Specific INSTR Resource Attributes continued VI_ATTR_VXI_DEV_CLASS This attribute represents the VXI defined device class to which the resource belongs message based VI_VXI_CLASS_MESSAGE register based VI_VXI_CLASS_REGISTER extended VI_VXI_CLASS_EXTENDED memory VI_VXI_CLASS_ MEMORY VME devices are usually either register based or belong to a miscellaneous class VI_VXI_CLASS_OTHER VI_ATTR_MA
247. es whether to unaddress the device UNT and UNL after each read or write operation VI_ATTR_GPIB_REN_STATE This attribute returns the current state of the GPIB REN interface line VXI and GPIB VXI Specific INSTR Resource Attributes VI_ATTR_ MAINFRAME LA This is the logical address of a given device in the mainframe usually the device with the lowest logical address Other possible values include the logical address of the Slot 0 controller or of the parent side extender Often these are all the same value The purpose of this attribute is to provide a unique ID for each mainframe A VISA manufacturer can choose any of these values but must be consistent across mainframes If this value is not known the attribute value returned is VI_ATTR_MANF_ID Manufacturer identification number of the VXIbus device Appendix B 385 VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description VXI and GPIB VXI Specific INSTR Resource Attributes continued VI_ATTR_MEM BASE Base address of the device in VXlbus memory address space This base address is applicable to A24 or A32 address space VI_ATTR_MEM SIZE Size of memory requested by the device in VXlbus address space VI_ATTR_MEM SPACE VXIbus address space used by the device The three types are A16 only A16 A24 or A16 A32 memory address space VI_ATTR_MODEL_CODE Model code for the device
248. esponse parameter is ignored and may be VI_NULL If a response is retrieved but is only a 16 bit value the upper half of the response parameter will be set to 0 Refer to the VXI Specification for defined word serial commands The command values Byte Available Byte Request Clear and Trigger are not valid for this operation Name Direction Type Description cmd IN ViUInt32 The miscellaneous command to send mode IN ViBuf Specifies whether to issue a command and or retrieve a response See the Description section for actual values response OUT ViUInt32 The response retrieved from the device If the mode specifies sending a command this parameter may be VI_NULL vi IN ViSession Unique logical identifier to a session 308 Chapter 7 VISA Language Reference viVxiCommandQuery Special Values for mode Parameter Mode Action Description VI_VXI_CMD16 Send 16 bit Word Serial command VI_VXI_CMD16_RESP16 Send 16 bit Word Serial query get 16 bit response VI_VXI_CMD32 Send 32 bit Word Serial command VI_VXI_CMD32_RESP16 Send 32 bit Word Serial query get 16 bit response VI_VXI_CMD32_RESP32 Send 32 bit Word Serial query get 32 bit response VI_VXI_RESP16 Get 16 bit response from previous query VI_VXI_RESP32 Get 32 bit response from previous query Not supported in Agilent VISA Return Values Type viStatus This is the function return status It returns either
249. essfully but the device at the specified address is not responding VI_WARN_CONFIG_NLOADED The specified configuration either does not exist or could not be loaded using VISA specified defaults Chapter 7 239 See Also VISA Language Reference viOpen Error Codes Description VI_ERROR_ALLOC Insufficient system resources to open a session VI_ERROR_INTF_NUM_NCONFIG The interface type is valid but the specified interface number is not configured VI_ERROR_INV_ACC_MODE Invalid access mode VI_ERROR_INV_RSRC_NAME Invalid resource reference specified Parsing error VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_LIBRARY_NFOUND A code library required by VISA could not be located or loaded VI_ERROR_NSUP_OPER The given sesn does not support this function For VISA this function is supported only by the Default Resource Manager session VI_ERROR_RSRC_BUSY The resource is valid but VISA cannot currently access it VI_ERROR_RSRC_LOCKED Specified type of lock cannot be obtained because the resource is already locked with a lock type incompatible with the lock requested VI_ERROR_RSRC_NFOUND Insufficient location information or resource not present in the system VI_ERROR_TMO A session to the resource could not be obtained within the specified ti
250. etion Code Description VI_SUCCESS Operation completed successfully 208 Chapter 7 See Also VISA Language Reference viln8 viln16 and viln32 Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SPACE Invalid address space specified VI_ERROR_NSUP_ALIGN_ OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas been locked for this kind of access viOut8 viOut16 viOut32 viPeek8 viPeek16 viPeek32 viMoveln8 viMoveln16 viMoveln32 Chapter 7 209 VISA Language Reference vilnstallHandler vilnstallHandler Syntax viInstallHandler ViSession vi ViEventType eventType ViHndlr handler ViAddr userHandle Description This function allows applications to install handlers on sessions for event callbacks The handler specified in the handler parameter is installed along with previously
251. eturn an event context Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Wait terminated successfully on receipt of an event occurrence The queue is empty VI_SUCCESS QUEUE _ Wait terminated successfully on receipt of an event NEMPTY notification There is still at least one more event occurrence of the specified inEventType type available for this session Chapter 7 315 VISA Language Reference viWaitOnEvent Error Codes Description VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_NENABLED The session must be enabled for events of the specified type to receive them VI_ERROR_TMO Specified event did not occur within the specified time period See Also See Chapter 4 Programming with VISA for more information on event handling 316 Chapter 7 VISA Language Reference viWrite es viWrite Syntax viWrite ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Description This function synchronously transfers data to a device The data to be written is in the buffer represented by buf This function returns only when the transfer terminates Only one synchronous write function can occur at any one time I
252. eturned by viFindRsrc Name Direction Type Description findList IN ViFindList Describes a find list This parameter must be created by viFindRsrc instrDesc OUT ViPRsrc Returns a string identifying location of a device Strings can be passed to viOpen to establish a session to the device Type vViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Resource s found Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER Given findList does not support this function VI_ERROR_RSRC_NFOUND There are no more matches viFindRsrc 188 Chapter 7 Syntax Description VISA Language Reference viFindRsrc viFindRsrc viFindRsrc ViSession sesn ViString expr ViFindList findList ViUInt32 retcnt ViRsrc instrDesc This function queries a VISA system to locate the resources associated with a specified interface This function matches the value specified in the expr parameter with the resources available for a particular interface On successful completion it returns the first resource found in the list and returns a count to indicate if there were more resources found that match the value specified in the expr parameter This function
253. eturns a unique access key for the lock if the operation succeeds This accessKey can then be passed to other sessions to share the lock lockType requestedKey ViAccessMode VikeyId Specifies the type of lock requested which can be VI_EXCLUSIVE_LOCK Or VI_SHARED LOCK This parameter is not used and should be set to VI_NULL when lockType is VI_EXCLUSIVE_LOCK exclusive lock When trying to lock the resource as VI_SHARED_LOCK shared lock a session can either set it to VI_NULL so that VISA generates an accessKey for the session or the session can suggest an accessKey to use for the shared lock See Description for more details timeout ViUInt32 Absolute time period in milliseconds that a resource waits to get unlocked by the locking session before returning this operation with an error VI_TMO_ IMMEDIATE and VI_TMO_INFINITE are also valid values vi vViSession Unique logical identifier to a session 214 Chapter 7 Return Values See Also Type viStatus VISA Language Reference viLock This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS The specified access mode was successfully acquired VI_SUCCESS NESTED_ EXCLUSIVE The specified access mode was successfully acquired and this session has nested exclusive locks VI_SUCCESS_NESTED_ SHARED
254. expired before write function completed viPrintf Chapter 7 299 Syntax Description Parameters VISA Language Reference viVQueryf viVQueryf vivQueryf ViSession vi ViString writeFmt ViString readFmt ViVAList params This function performs a formatted write and read through a single operation invocation This function is similar to vigueryf except that the VivAList parameters list provides the parameters rather than the separate arg parameter list in viQueryf NOTE VISA functions that take a variable number of parameters e g viPrintf viScanf and viQueryf are not callable from Visual Basic Use the corresponding viVPrintf viVScanf and viVQueryf functions instead Name __ Direction Type Description params IN OUT ViVAList A list containing the variable number of write and read parameters The write parameters are formatted and written to the specified device The read parameters store the data read from the device after the format string is applied to the data readFmt IN viString The format string is applied to read parameters in ViVAList vi IN ViSession Unique logical identifier to a session writeFmt IN viString The format string is applied to write parameters in ViVAList 300 Chapter 7 Return Values See Also Type viStatus VISA Language Reference viVQueryf This is the function return status It returns either a completion code or
255. f you pass VI_NULL as the retCount parameter to the viWrite operation the number of bytes transferred will not be returned This may be useful if it is important to know only whether the operation succeeded or failed Parameters Name Direction Type Description buf IN ViBuf Represents the location of a data block to be sent to device count IN ViUInt32 Specifies number of bytes to be written retCount OUT ViUInt32 Represents the location of an integer that will be set to the number of bytes actually transferred vi IN ViSession Unique logical identifier to a session Special value for retCount Parameter Value Description VI_NULL Do not return the number of bytes transferred Chapter 7 317 Return Values See Also VISA Language Reference viWrite Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Transfer completed Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INP_PROT_VIOL Device reported an input protocol error occurred during transfer VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start write
256. fic operations and attributes that allow it to perform its dedicated task The BACKPLANE Resource lets a controller query and manipulate specific lines on a specific mainframe in a given VXI system Services are provided to map unmap assert and receive hardware triggers and also to assert various utility and interrupt signals This includes advanced functionality that may not be available in all implementations or all vendors controllers A VXI system with an embedded CPU with one mainframe will always have exactly one BACKPLANE resource Valid examples of resource strings for this are VXIO 0 BACKPLANE and VXI BACKPLANE A multi chassis VXI system may provide only one BACKPLANE resource total but the recommended way is to provide one BACKPLANE resource per chassis with the resource string address corresponding to the attribute VI_ATTR_MAINFRAME LA If a multi chassis VXI system provides only one BACKPLANE resource it is assumed to control the backplane resources in all chasses NOTE Some VXI or GPIB VXI implementations view all chasses in a VXI system as one entity In these configurations separate BACKPLANE resources are not possible Appendix B 409 VISA Resource Classes VXI Mainframe Backplane BACKPLANE Resource BACKPLANE Resource Attributes Attribute Name Access Data Type Range Default Privilege Generic BACKPLANE Resource Attributes VI_ATTR_INTF_NUM RO Global ViUInt1
257. ficient system resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viStatusDesc vi status desc Codes Description VI_SUCCESS Description successfully returned VI_WARN_UNKNOWN_STATUS The status code passed to the function could not be interpreted viTerminate vi degree jobld Codes VI_SUCCESS Description Request serviced successfully VI_ERROR_ABORT Calls in the current process executing on the specified vi are aborted VI_ERROR_INV_DEGREE Invalid degree specified VI_ERROR_INV_JOB_ID Invalid job identifier specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid 360 Appendix A VISA Library Information VISA Error Codes viUninstallHandler vi eventType handler userHandle Codes Description VI_SUCCESS Event handler successfully uninstalled VI_ERROR_HNDLR_NINSTALLED A handler is not currently installed for the specified event VI_ERR
258. fied offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access 350 Appendix A VISA Library Information VISA Error Codes viOpen sesn rsrcName accessMode timeout vi Codes Description VI_SUCCESS Session opened successfully VI_WARN_CONFIG_NLOADED The specified configuration either does not exist or could not be loaded using VISA specified defaults VI_ERROR_ALLOC Insufficient system resources to open a session VI_ERROR_INTF_NUM_NCONFIG The interface type is valid but the specified interface number is not configured VI_ERROR_INV_ACC_MODE Invalid access mode VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_RSRC_NAME Invalid resource reference specified Parsing error VI_ERROR_INV_SESSION The given sesn does not identify a valid session VI_ERROR_NSUP_OPER The given sesn does not support this function For VISA this operation is supported only by the Default Resource Manager session VI_ERROR_RSRC_BUSY VI_ERROR_RSRC_LOCKED The resource is valid but VISA cannot currently access it Specified type of lock cannot be obtained
259. g the handler VISA identifies handlers uniquely using the handler reference and the userHandle All the handlers for which the handler reference and the userHandle matches are uninstalled Name Direction Type Description eventType IN ViEventType Logical event identifier handler IN ViHndlr Interpreted as a valid reference to a handler to be uninstalled by an application See the following table userHandle IN ViAddr A value specified by an application that can be used for identifying handlers uniquely in a session for an event vi IN viSession Unique logical identifier to a session The following events are valid Event Name Description VI_EVENT_IO_ COMPLETION Notification that an asynchronous operation has completed VI_EVENT_SERVICE_REQ Notification that a device is requesting service VI_EVENT_TRIG Notification that a hardware trigger was received from a device VI_EVENT_VXI_SIGP Notification that a VXI signal or VXI interrupt has been received from a device 292 Chapter 7 Return Values See Also Special Value for handler Parameter VISA Language Reference viUninstallHandler Value Action Description VI_ANY_HNDLR Uninstall all the handlers with the matching value in the UserHandle parameter Type viStatus This is the function return status It returns either a completion code or an error code as follows
260. gDest is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed viMemAlloc vi size offset Codes Description VI_SUCCESS The operation completed successfully VI_ERROR_ALLOC VI_ERROR_INV_OBJECT Unable to allocate shared memory block of requested size The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SIZE Invalid size specified VI_ERROR_MEM_NSHARED The device does not export any memory VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access Appendix A 347 VISA Library Information VISA Error Codes viMemF ree vi offset Codes Description VI_SUCCESS The operation completed successfully VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ER
261. given session VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_SEND_END_EN Whether to assert END during the transfer of the last byte of the buffer VI_ATTR_TERMCHAR Termination character When the termination character is read and VI_ATTR_TERMCHAR EN is enabled during a read operation the read operation terminates VI_ATTR_TERMCHAR_EN Flag that determines whether the read operation should terminate when a termination character is received VI_ATTR_TMO_VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means that operations should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism 404 Appendix B VISA Resource Classes GPIB Bus Interface INTFC Resource Attribute Name Description Generic INTFC Resource Attributes continued VI_ATTR_DEV_STATUS_ BYTE This attribute specifies the 488 style status byte of the local controller associated with this session If this attribute is written and bit 6 0x40 is set this device or controller will assert a service request SRQ if it is defined for this interface VI_ATTR_WR_BUF_OPER_MODE Determines the operational mode of the write buffer When the operational mode is set to VI_FLUSH_WHEN_ FULL default the buffer is flushed when an END indicator is written to the buffer or when the buffer fills up
262. hapter 7 VISA Language Reference for details on the VISA commands Chapter 6 133 Programming via LAN LAN Interfaces Overview Example LAN The LAN Client interface system in the following figure consists of a Client Gateway Windows PC with a LAN card an E2050 LAN GPIB gateway and two GPIB Interface instruments For this system the IO Config utility has been used to assign the LAN card a VISA name of TCPIPO With this name assigned to the interface VISA addressing is as shown in the figure and you can use the VISA viOpen command to open the I O paths to the GPIB instruments as shown in the figure a D LAN Client Gateway Interface VISA Names Windows PC LAN GPIB Gateway GPIB Instruments machine1 VISA Name hpib name hpib ES 5 TCPIPO LAN Card E2050 3 LAN GPIB Cable VISA Addressing Using LAN Client viOpen TCPIPO machine1 hpib 5 INSTR Open IO path to GPIB instrument at address 5 Tuu TCPIPO machine1 hpib 3 INSTR Open IO path to GPIB instrument at address 3 p 134 Chapter 6 Programming via LAN LAN Interfaces Overview Example LAN The LAN Client interface system in the following figure consists of a Client LAN Windows PC with a LAN card and three LAN instruments Instrument1 and Interface instrument2 are VXI 11 2 GPIB Emulation instruments and instruments is a VXI 11 3 LAN instrument
263. he source as a FIFO register 120 Chapter 5 Programming via GPIB and VXI Using the Memory Access Resource Attribute Description VI_ATTR_DEST_INCREMENT Used in viMoveOutxx operation to specify how much the destination offset is to be incremented after every transfer The default value is 1 and the viMoveOutxx operation moves into consecutive elements If this attribute is set to 0 the viMoveOutxx operation will always write to the same element essentially treating the destination as a FIFO register VI_ATTR_WIN_ACCESS Specifies modes in which the current window may be addressed not currently mapped through the viPeekxx or viPokexx operations only or through operations and or by directly de referencing the address parameter as a pointer VI_ATTR WIN BASE ADDR Base address of the interface bus to which this window is mapped VI_ATTR_WIN_SIZE Size of the region mapped to this window VI_ATTR_SRC_BYTE ORDER Specifies the byte order used in high level access operations such as viInxx and viMoveInxx when reading from the source VI_ATTR_DEST_BYTE ORDER Specifies the byte order used in high level access operations such aS viOutxx and viMoveOutxx when writing to the destination VI_ATTR_WIN_BYTE_ ORDER Specifies the byte order used in low level access operations such as viMapAddress viPeekxx and viPokexx when accessing the mapped window VI_ATTR_SRC_ACCESS_PRI
264. he VISA Instrument Control Resources VISA instrument control resources This is the name given to the part of VISA that defines all of the device specific resource classes VISA Instrument Control Resources encompass all defined device and interface capabilities for direct low level instrument control VISA resource manager This is the name given to the part of VISA that manages resources This management includes support for opening closing and finding resources setting attributes retrieving attributes and generating events on resources etc VISA Resource Template This is the name given to the part of VISA defines the basic constraints and interface definition for the creation and use of a VISA resource All VISA resources must derive their interface from the definition of the VISA Resource Template 430 Glossary A addressing devices 44 addressing device sessions 44 Agilent telephone numbers 16 Agilent web site 16 applications building 19 argument length modifier 52 array size 53 attributes 62 setting VXI trigger lines 125 VXI 123 B BACKPLANE resource class 409 buffers formatted I O 57 building DLLs 19 C callbacks and events 62 69 closing device sessions 46 compiling in HP UX 35 completion codes 331 conversion formatted I O 50 copyright information 10 D Debug Window using 30 declarations file 41 default resource manager 41 device sessions addressing 44 closing 46 op
265. he given INSTR resource srcOffset and destOffset specified in the viMove operation fora MEMACC resource are absolute addresses Name Direction Type Description destOffset IN ViBusAddress Specifies the address space of the destination destSpace IN viUInt16 Specifies the address space of the destination destWidth IN viUInt16 Specifies the data width of the destination length IN ViBusSize Number of data elements to transfer where the data width of the elements to transfer is identical to the source data width srcOffset IN ViBusAddress Offset of the starting address or register from which to read srcSpace IN viUInt16 Specifies the address space of the source srcWidth IN viUInt16 Specifies the data width of the source vi IN viSession Unique logical identifier to a session Chapter 7 225 Return Values See Also VISA Language Reference viMove Type ViStatus This is the operational return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus Error occurred during transfer VI_ERROR_INV_LENGTH Invalid length specified VI_ERROR_INV_OFFSET Invalid source or destination offset specified VI_ERROR_INV_SESSION VI_ERROR_OBJECT VI_ERROR_INV_SETUP The given session or object reference is inv
266. he interface cannot generate an interrupt on the requested level or with the requested status D value VI_ERROR_NSUP_LINE One of the specified lines trigSrc or trigDest is not supported by this VISA implementation VI_ERROR_NSUP_MECH The specified mechanism is not supported for the given event type VI_ERROR_NSUP_MODE The specified mode is not supported by this VISA implementation VI_ERROR_NSUP_OFFSET The offset specified is not accessible 334 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_NSUP_OPER The operation specified is not supported in the given session VI_ERROR_NSUP_VAR_WIDTH The specified mode is not supported by this VISA implementation VI_ERROR_NSUP_WIDTH The specified width is not supported by this hardware VI_ERROR_NSYS_CNTLR The interface associated with this session is not the system controller VI_ERROR_OUTP_PROT_VIOL Output protocol error occurred during transfer VI_ERROR_QUEUE_ERROR VI_ERROR_RAW_RD PROT _VIOL VI_ERROR_RAW WR_PROT_VIOL Unable to queue read or write operation A violation of raw read protocol occurred during a transfer A violation of raw write protocol occurred during a transfer VI_ERROR_RESP_PENDING A previous response is still pending causing a multiple query error VI_ERROR_RSRC_BUSY The resource is valid but VISA cannot currently access it
267. he offset parameters specify relative offsets from the start of the instrument s address space If the viSession parameter vi refers to a MEMACC session the offset parameters are absolute offsets from the start of memory in the specified VXI address space The valid entries for specifying address space are Value Description VI_A16_SPACE Address the A16 address space of VXI MXI bus VI_A24 SPACE Address the A24 address space of VXI MXI bus VI_A32_SPACE Address the A32 address space of VXI MXI bus The viMovelrn functions do a block move of memory from a VXI device if VI_ATTR_SRC_INCREMENT is 1 However they do a FIFO read of a VXI memory location if VI_LATTR_SRC_INCREMENT is 0 zero The high level operations viIn8 viIn16 and viIn32 operate successfully independently from the low level operations viMapAddress viPeek8 viPeek16 viPeek32 viPoke8 viPokel16 and viPoke32 Chapter 7 231 Parameters VISA Language Reference viMovelin8 viMoveln16 and viMoveln32 The high level and low level operations should operate independently regardless of the configured state of the hardware that is used to perform memory accesses For an INSTR resource the offset is a relative address of the device associated with the given INSTR resource For a MEMACC resource the offset parameter specifies an absolute address The offset specified in the viMoveIn8 viMoveIn16 and viMoveIn32 operations for an INSTR resour
268. he queuing mechanism in viEnableEvent There is no way to install a VISA event handler in Visual Basic There are two ways you can receive notification that an event has occurred E install an event handler with viInstallhandler and enable one or several events with viEnableEvent If the event was enabled with a handler the specified event handler will be called when the specified event occurs This is called a callback NOTE VISA cannot callback to a Visual Basic function This means that you can only use the VI_QUEUE mechanism in viEnableEvent There is no way to install a VISA event handler in Visual Basic E Enable one or several events with viEnableEvent and call the viWaitOnEvent function The viWaitOnEvent function will suspend the program execution until the specified event occurs or the specified timeout period is reached This is called queuing 62 Chapter 4 Events That can be Enabled Programming with VISA Using Events and Handlers The queuing and callback mechanisms are suitable for different programming styles The queuing mechanism is generally useful for non critical events that do not need immediate servicing The callback mechanism is useful when immediate responses are needed These mechanisms work independently of each other so both can be enabled at the same time By default a session is not enabled to receive any events by either mechanism The viEnableEvent operation can be used to enable a sess
269. he system then it returns immediately without waiting for the transfer to complete When the transfer terminates a VI_LEVENT_IO COMPLETE event indicates the status of the transfer The operation returns job d which you can use either with viTerminate to abort the operation or with VI_EVENT_IO_ COMPLETION events to identify which asynchronous move operations completed The source and destination can be either local memory or the offset of the device interface with which this INSTR or MEMACC Resource is associated This operation uses the specified data width and address space If the viSession parameter vi refers to an INSTR session the offset parameters specify relative offsets from the start of the instrument s address space If the viSession parameter vi refers to a MEMACC session the offset parameters are absolute offsets from the start of memory in the specified VXI address space Valid entries for specifying address space Value Description VI_A16_SPACE Address A16 memory address space of the VXI MXI bus VI_A24_ SPACE Address A24 memory address space of the VXI MXI bus VI_A32_SPACE Address A32 memory address space of the VXI MXI bus VI_LOCAL_SPACE Addresses the process local memory using virtual address Chapter 7 227 Parameters VISA Language Reference viMoveAsync Valid entries for specifying widths Value Description VI_WIDTH_8 Performs an 8 bit D08 transfer VI_WIDTH_
270. her source or destination multiple times requires special hardware capabilities and is not guaranteed to be implemented Name Direction Type Description mode IN viUInt16 Specifies the trigger mapping mode This should always be VI_NULL for VISA 2 2 trigDest IN ViInt16 Destination line to which to map trigSrc IN ViInt16 Source line from which to map vi IN ViSession Unique logical identifier to a session Chapter 7 219 VISA Language Reference viMapTrigger Special Values for trgSrc and trigDest Parameters Value Action Description VI_TRIG ECLO Map the specified VXI ECL trigger line VI_TRIG_ECL1 VI_TRIG PANEL IN Map controller s front panel trigger input line VI_TRIG_ PANEL OUT Map controller s front panel trigger output line VI_TRIG TTLO Map the specified VXI TTL trigger line VI_TRIG TTL7 Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully VI_SUCCESS TRIG MAPPED Path from trigSrc to trigDest is already mapped Error Codes Description VI_ERROR_INV_LINE Specified line s trigSrc or trigDest invalid VI_ERROR_INV_MODE Value specified by the mode parameter is invalid VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are
271. i ViString writeFmt arg1 arg2 This function converts formats and sends the parameters arg1 arg2 to the device as specified by the format string Before sending the data the function formats the arg characters in the parameter list as specified in the writeFmt string You should not use the viWrite and viPrintf functions in the same session VISA functions that take a variable number of parameters e g viPrintf viScanf and viQuery are not callable from Visual Basic Use the corresponding vivPrintf vivScanf and vivQueryf functions instead The writeFmt string can include regular character sequences special formatting characters and special format specifiers The regular characters including white spaces are written to the device unchanged The special characters consist of backslash followed by a character The format specifier sequence consists of percent followed by an optional modifier flag followed by a format code Up to four arg parameters may be required to satisfy a format conversion request In the case where multiple args are required they appear in the following order field width with d f or s if used precision with d f or s if used array_size with b B y d or f if used value to convert This assumes that a is provided for both the field width and the precision modifiers in a s d or f The third arg parameter is used to satisfy a c
272. iClose vi viClose drm Chapter 5 119 Programming via GPIB and VXI Using the Memory Access Resource MEMACC Attribute Descriptions Generic MEMACC The following Read Only attributes VI_ATTR_TMO_VALUE is Read Write Attributes provide general interface information Attribute Description VI_ATTR_INTF_TYPE Interface type of the given session VI_ATTR_INTF_NUM Board number for the given interface VI_ATTR_TMO_ VALUE Minimum timeout value to use in milliseconds A timeout value of VI_TMO_IMMEDIATE means operation should never wait for the device to respond A timeout value of VI_TMO_INFINITE disables the timeout mechanism VI_ATTR_INTF_INST_NAME Human readable text describing the given interface VI_ATTR_DMA ALLOW _EN Specifies whether I O accesses should use DMA VI_TRUE or Programmed I O VI_FALSE VXI and GPIB VXI The following attributes most of which are read write provide memory Specific MEMACC window control information Attributes Attribute Description VI_ATTR_VXI_LA Logical address of the local controller VI_ATTR_SRC_INCREMENT Used in viMoveInxx operation to specify how much the source offset is to be incremented after every transfer The default value is 1 and the viMoveInxx operation moves from consecutive elements If this attribute is set to 0 the viMoveInxx operation will always read from the same element essentially treating t
273. iPrint vi writeFmt arg1 arg2 viQueryf vi writeFmt readFmt arg1 arg2 viRead vi buf count retCount viReadAsync vi buf count jobld viReadSTB vi status viReadToFile vi fileName count retCount viScanf vi readFmt arg1 arg2 viSetBuf vi mask size viSPrintf vi buf writeFmt arg1 arg2 viSScanf vi buf readFmt arg1 arg2 viUnmapAddress vi viVPrintf vi writeFmt params vivQueryf vi writeFmt readFmt params viVScanf vi readFmt params vivsPrint vi buf writeFmt params vivSScanf vi buf readFmt params viVxiCommandQuery vi mode cmd response viWrite vi buf count retCount viWriteAsync vi buf count jobld viWriteFromFile vi fileName count retCount 394 Appendix B VISA Resource Classes Memory Access MEMACC Resource Memory Access MEMACC Resource This section describes the Memory Access MEMACC Resource that is provided to encapsulate the address space of a memory mapped bus such as the VXlbus MEMACC Resource Overview The Memory Access MEMACC Resource encapsulates the address space of a memory mapped bus such as the VXlbus A VISA Memory Access Resource like any other resource starts with the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute Although the MEMACC resource does not have viSetAttribute listed in its ope
274. iSession Vi Description Pulse the interface clear line IFC for at least 100 useconds This operation asserts the IFC line and becomes controller in charge CIC The local board must be the system controller This operation is valid only on GPIB INTFC interface sessions Parameters Name _ Direction Type Description vi IN vViSession Unique logical identifier to a session Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code VI_SUCCESS Description Operation completed successfully Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_NSYS_CNTLR The interface associated with this session is not the system controller VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also INTFC Resource Description 206 Chapter 7 Syntax Description VISA Language Reference viln8 viln16 and viln32 viln8 viln16 and viln32 vilIn8 ViSession vi ViUInt16 space ViBusAddress offset ViUInt8 valg vilInl6 ViSession vi ViUInt16 space ViBusAddress offset ViUInt16 val16 viIn32 ViSession
275. ibrary Information VISA Error Codes Codes Description VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed viGpibSendIFC vi Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_NSYS_CNTLR The interface associated with this session is not the system controller VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viln8 vi space offset val8 viIn16 vi space offset val16 vilIn32 vi space offset val32 Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_OFFSET
276. icating with GPIB Devices via LAN If long timeouts must be used the server may be reset An HP UX server may be reset by logging into the server host and killing the running siclland daemon s However this procedure will affect all clients connected to the server A Windows 95 Windows 98 Windows Me Windows 2000 or Windows NT server may be reset by typing Ctrl C in the LAN Server window and then restarting the server from the Agilent IO Libraries program group This procedure will also affect all clients connected to the server LAN Signal Handling on HP UX This section describes how to use signal handling and service requests over LAN for HP UX VISA uses SIGIO signals for SRQs on LAN interfaces on HP UX The VISA LAN Client installs a signal handler to catch SIGIO signals To enable sharing of SIGIO signals with other portions of an application the VISA LAN SIGIO signal handler remembers the address of any previously installed SIGIO handler and calls this handler after processing a SIGIO signal itself If your application installs a SIGIO handler it should also remember the address of a previously installed handler and call it before completing The signal number used with LAN SIGIO cannot be changed Chapter 6 145 Programming via LAN Communicating with GPIB Devices via LAN Notes 146 Chapter 6 VISA Language Reference VISA Language Reference This chapter describes each function in the VISA library for
277. ice Type Register 0x 4X n devtype reg Close sessions viClose dmn viClose defaultRM 110 Chapter 5 Programming via GPIB and VXI Using Low Level Memory Functions Example Using the This program uses low level memory functions and the GPIB VXI interface GPIB VXI Interface Low Level Functions to read the ID and Device Type registers of a device at GPIB VXI0 24 Memory gpibvxil c This example program uses the low level memory functions to read the id and device type registers of the device at GPIB VX1I0 24 Change this address if necessary Register contents are then displayed finclude lt visa h gt finclude lt stdlib h gt include lt stdio h gt void main ViSession defaultRM dmm ViAddr address unsigned short id_reg devtype reg Open session to VXI device at address 24 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB VX1I0 24 INSTR VI _ NULL VI_NULL amp dmm Map into memory space viMapAddress dmm VI_Al6 SPACE 0x00 0x10 VI_FALSI VI_NULL amp address Gl Read instrument id register contents viPeek16 dmm address amp id reg Read device type register contents ViAddr is defined as a void so we must cast it to something else to do pointer arithmetic viPeek16 dmm ViAddr ViUInt16 address 0x01 amp devtype reg Unmap memory space viUnmapAddress dmm Pr
278. ice to which you want to pass control secAddr IN ViUInt16 Secondary address of the targeted GPIB device If the targeted device does not have a secondary address this parameter should contain the value VI_NO_SEC_ADDR vi IN vViSession Unique logical identifier to a session Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully 204 Chapter 7 VISA Language Reference viGpibPassControl Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed See Also INTFC Resource Description Chapter 7 205 VISA Language Reference viGpibSendIFC viGpibSendlIFC Syntax viGpibSendIFC V
279. ied mode The mode can also specify whether the local interface board should acquire or release Controller Active status This operation is valid only on GPIB INTFC interface sessions NOTE It is generally not necessary to use the viGpibContro1ATN operation in most applications Other operations such aS viGpibCommand and viGpibPassControl modify the ATN and or CIC state automatically Parameters Name _ Direction Type Description mode IN ViUInt16 Specifies the state of the ATN line and optionally the local active controller state vi IN ViSession Unique logical identifier to a session Special Values for mode Parameter mode Action Description VI_GPIB_ATN_ ASSERT Assert ATN line synchronously in 488 terminology If a data handshake is in progress ATN will not be asserted until the handshake is complete VI_GPIB_ATN_DEASSERT Deassert ATN line VI_GPIB_ATN_DEASSERT_ Deassert ATN line and enter shadow HANDSHAKE handshake mode The local board will participate in data handshakes as an Acceptor without actually reading the data 200 Chapter 7 VISA Language Reference viGpibControlATN mode Action Description VI_GPIB_REN ASSERT_ IMMEDIATE Assert ATN line asynchronously in 488 terminology This should generally be used only under error conditions Not supported in Agilent VISA Return Values Type viStatus This is the function re
280. ied operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed Appendix A 367 VISA Library Information VISA Directories Information VISA Directories Information This section provides information about the location of VISA software files This information can be used as reference or for removing VISA software from your system if necessary NOTE For Windows systems use Add Remove Programs from the Windows Control Panel to remove files rather than deleting them manually Windows Directory Structure The VXlplug amp play alliance defines directory structures to be used with the Windows system framework As shown in the following figure VISA files are automatically installed into the WIN95 subdirectory on Windows 95 Windows 98 or Windows Me or into the WINNT subdirectory on Windows 2000 or Windows NT The VXIPNPPATH defaults to Program Files VISA but can be changed during software installation The VISA32 DLL file is stored in the WINDOWS SYSTEM subdirectory Windows 95 Windows 98 or Windows Me or in the WINNT SYSTEM32 subdirectory Windows 2000 or Windows NT For Windows systems the VISA path can be displayed by clicking the blue IO icon near the clock on the Windows taskbar Then select View Documentation and then Installation Information to view a dialog box that contains th
281. ied resource VI_ERROR_INV_EXPR The expression specified is invalid VI_ERROR_INV_FMT The format specifier is invalid for the current argument VI_ERROR_INV_HNDLR_REF VI_ERROR_INV_JOB_ID The specified handler reference and or the user context value does not match the installed handler The specified job identifier is invalid VI_ERROR_INV_LENGTH The length specified is invalid VI_ERROR_INV_LINE The value specified by the ine parameter is invalid VI_ERROR_INV_LOCK_TYPE The specified type of lock is not supported by this resource VI_ERROR_INV_MASK The system cannot set the buffer for the given mask or the specified mask does not specify a valid flush operation on the read write resource VI_ERROR_INV_MECH The mechanism specified for the event is invalid VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_OBJECT The object reference is invalid VI_ERROR_INV_OFFSET The offset specified is invalid VI_ERROR_INV_PARAMETER The value of some parameter is invalid VI_ERROR_INV_PROT The protocol specified is invalid VI_ERROR_INV_RSRC_NAME The resources specified are invalid VI_ERROR_INV_SESSION The session specified is invalid Appendix A 333 VISA Library Information VISA Error Codes Codes Description VI_ERROR_INV_SETUP The setup specified is invalid possibly due
282. if an error occurs before the asynchronous portion begins i e the error is returned from the asynchronous operation itself then the exception event will still be raised This deviation is due to the fact that asynchronous operations already raise an event when they complete and this I O completion event may occur in the context of a separate thread previously unknown to the application In summary a single application event handler can easily handle error conditions arising from both exception events and failed asynchronous operations Using the You can use the VI_EVENT EXCEPTION event as notification that an error VILEVENT_ condition has occurred during an operation invocation The following table EXCEPTION Event describes the VI_EVENT_EXCEPTION event attributes Attribute Name Access Data Type Range Default Privilege VI_ATTR_EVENT TYPE RO Global viEventType VI_EVENT_EXCEPTION N A VI_ATTR_STATUS RO Global viStatus N A N A VI_ATTR_OPER_NAME RO Global viString N A N A Example Exception Events This is an example of how to use exception events to trap VISA errors An exception event handler must be installed and exception events enabled on all sessions where the exception handler is used include lt stdio h gt include lt visa h gt ViStatus _stdcall myExceptionHandler ViSession vi ViEventTyp ventType ViEvent context ViAddr usrHandle ViStatus exceptionErrNbr
283. ification that the GPIB controller has gained or lost CIC controller in charge status Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_GPIB_ event CIC VI_ATTR_GPIB_RECV_ Controller has become RO ViBoolean VI_TRUE CIC_STATE controller in charge VI_FALSE 406 Appendix B VI_EVENT_GPIB_TALK VISA Resource Classes GPIB Bus Interface INTFC Resource Notification that the GPIB controller has been addressed to talk Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_GPIB_ TALK VI_EVENT_GPIB_LISTEN Notification that the GPIB controller has been addressed to listen Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_GPIB_ LISTEN VI_EVENT_CLEAR Notification that the GPIB controller has been sent a device clear message Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_CLEAR VILEVENT_TRIGGER Notification that a trigger interrupt was received from the interface ID mechanism on which the specified trigger even
284. igh level memory functions to move blocks of data to or from local memory Specifically the viMoveln function moves an 8 16 or 32 bit block of data from the specified offset to local memory and the viMoveOut functions moves an 8 16 or 32 bit block of data from local memory to the specified offset Again the memory mapping is done for you For example in this function viMovelIn32 vi space offset length buf32 vi is the session identifier and offset is used to indicate the offset of the memory to be mapped offset is relative to the location of this device s memory in the given address space The space parameter determines which memory location to map the space and the length parameter specifies the number of elements to transfer 8 16 or 32 bits The buf32 parameter is a pointer to where the data read will be stored If instead you write to the registers via the viMoveOut32 function the buf32 parameter is a pointer to the data to write to the specified registers High Level Memory Functions Examples Two example programs follow that use the high level memory functions to read the ID and Device Type registers of a device at the VXI logical address 24 The contents of the registers are then printed out The first program uses the VXI interface and the second program accesses the backplane with the GPIB VXI interface These two programs are identical except for the string passed to viOpen This program uses high level
285. imeout is set to the VISA Timeout plus the Client Timeout Delta E The calculated LAN Timeout increases as necessary to meet the needs of the application but never decreases This avoids the overhead of readjusting the LAN Timeout every time the application changes the VISA Timeout To change the defaults 1 Run the IO Config utility Windows or the visacfg utility HP UX 2 Edit the LAN Client interface 3 Change the Server Timeout or Client Timeout Delta parameter See online help for information on changing these values 4 Restart the VISA LAN applications If an application is killed either via Ctrl C or the HP UX kill command during a VISA operation performed at the LAN server the server will continue to try the operation until the server s timeout is reached By default the LAN server associated with an application using a timeout of infinity that is killed may not discover that the client is no longer running for up to two minutes If you are using a server other than the LAN server supported with the product check that server s documentation for its default behavior If both the LAN client and LAN server are configured to use a long timeout value the server may appear hung If this situation is encountered the LAN client via the Server Timeout value or the LAN server may be configured to use a shorter timeout value 144 Chapter 6 Using Signal Handling over LAN HP UX Only Programming via LAN Commun
286. in a known state The viPrintf call is used again to query for the device identification IDN The viScanf call is then used to read the results viClose This function must be used to close each session When you close a device session all data structures that had been allocated for the session will be deallocated When you close the default manager session all sessions opened using that default manager session will be closed Running the Example Program To run the idn example program type the program name at the command prompt For example idn If the program run correctly the following is an example of the output if connected to a 54601A oscilloscope Hewlett Packard 54601A 0 1 7 34 Chapter 3 Building a VISA Application in HP UX Building a VISA Program in HP UX If you have problems running the idn example program first check to make sure the device address specified in your program is correct If the program still does not run check the I O configuration See the Agilent I O Libraries Installation and Configuration Guide for HP UX for information on I O configuration Compiling and Linking a VISA Program You can create your VISA applications in ANSI C or C When compiling and linking a C program that uses VISA use the lvisa command line option to link in the VISA library routines The following example creates the idn executable file cc Aa o idn idn c lvisa The Aa option indicates ANSI C a E The o op
287. indows 98 or Windows Me the Message Viewer utility provides a way to view internal VISA error messages during application execution Some of these internal messages do not represent programming errors and are actually error messages from VISA which are being handled internally by VISA The Message Viewer utility must be run BEFORE you run your VISA application However the utility will receive messages while minimized This utility also provides menu selections for saving the logged messages to a file and for clearing the message buffer Chapter 2 29 Building a VISA Application in Windows Logging Error Messages The process to use the Message Viewer is Enable VISA logging from the Agilent IO Libraries Control click VISA Logging Message Viewer Start the Message Viewer From the Agilent IO Libraries Control click Run Message Viewer Run your VISA program View error messages in the Message Viewer window Using the Debug Window 30 When VISA logging is directed to the Debug Window VISA writes logging messages using the Win32 API call OutputDebugString The most common use for this feature is when debugging your VISA program using an application such as Microsoft Visual Studio In this case VISA messages will appear in the Visual Studio output window The process to use the Debug Window is Enable VISA logging from the Agilent IO Libraries Control Click VISA Logging Debug Window Run your VISA program from Micro
288. ing is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viVScanf 280 Timeout expired before read function completed Chapter 7 Syntax Description Parameters VISA Language Reference viSetAttribute viSetAttribute viSetAttribute ViSession ViEvent ViFindList vi ViAttr attribute ViAttrState attrState This function sets the state of an attribute for the specified session The viSetAttribute operation is used to modify the state of an attribute for the specified session event or find list If a resource cannot set an optional attribute state and the specified attribute state is valid and the attribute description does not specify otherwise viSetAttribute returns error code VI_LERROR_NSUP_ATTR_STATE Both VI __WARN_NSUP_ATTR_STATE and VI __ERROR_NSUP_ATTR_STATE indicate that the specified attribute state is not supported Unless a a specific rule states otherwise a resource normally returns the error code VI_ERROR_NSUP_ATTR_STATE when it cannot set a specified attribute state The completion code VI __WARN_NSUP_ATTR_STATE is intended to alert the application that although the specified optional attribute state is not supported the application should not fail One example is attempting to set an attribute value that would increase performance speeds This is different th
289. ing through the use of the requestedKey parameter Alternatively a user application can pass VI_NULL for the requestedKey parameter when obtaining a shared lock in which case VISA will generate a unique access key and return it through the accessKey parameter If a user application does specify a requestedKey value VISA will try to use this value for the accessKey As long as the resource is not locked VISA will use the requestedKey as the access key and grant the lock When the operation succeeds the requestedKey will be copied into the user buffer referred to by the accessKey parameter The session that gained a shared lock can pass the accessKey to other sessions for the purpose of sharing the lock The session wanting to join the group of sessions sharing the lock can use the key as an input value to the requestedKey parameter VISA will add the session to the list of sessions sharing the lock as long as the requestedKey value matches the accessKey value for the particular resource The session obtaining a shared lock in this manner will then have the same access privileges as the original session that obtained the lock 212 Chapter 7 VISA Language Reference viLock It is also possible to obtain nested locks through this function To acquire nested locks invoke the viLock function with the same lock type as the previous invocation of this function For each session viLock and viUnlock share a lock count which is initialized to
290. innt include To install visa32 bas 1 Select project Add Module from the menu 2 Select the Existing tab 3 Browse and select the visa32 bas file from applicable directory 4 Click the Open button VISA functions return a status code which indicates success or failure of the function The only indication of an error is the value of returned status code The VB Error variable is not set by any VISA function Thus you cannot use the ON ERROR construct in VB or the value of the VB Error variable to catch VISA function errors VISA cannot callback to a VB function Thus you can only use the VI_QUEUE mechanism in viEnableEvent There is no way to install a VISA event handler in VB VISA functions that take a variable number of parameters viPrintf viScanf viQueryf are not callable from VB Use the corresponding vivPrintf vivScanf and vivQueryf functions instead You cannot pass variables of type Variant to VISA functions If you attempt this the Visual Basic program will probably crash with a General Protection Fault or an Access Violation Chapter 2 23 Format Conversion Commands Numeric Arrays Strings Building a VISA Application in Windows Building a VISA Program Visual Basic The functions vivPrintf viVscanf and viVqueryf can be called from VB but there are restrictions on the format conversions that can be used Only one format conversion command can be specified in a format string a format convers
291. int results printf ID Register 0x 4X n id reg printf Device Type Register 0x 4X n devtype reg Close sessions viClose dmm viClose defaultRM Chapter 5 111 Programming via GPIB and VXI Using Low High Level Memory I O Methods Using Low High Level Memory I O Methods VISA supports three different memory I O methods for accessing memory on the VXI backplane as shown All three of these access methods can be used to read and write VXI memory in the A16 A24 and A32 address spaces The best method to use depends on the VISA program characteristics E Low level viPeek viPoke Q viMapAddress Q viUnmapAddress UL viPeek8 viPeek16 viPeek32 UL viPoke8 viPokel6 viPoke32 E High level viIn viOut LC vilIn8 viIn16 viiIn32 QC viOut8 viOutl6 viOut32 E High level viMoveIn viMoveOut CL viMoveIn8 viMoveIn16 viMoveIn32 UL viMoveOut8 viMoveOut16 viMoveOut32 Using Low Level viPeek viPoke Low level viPeek viPoke is the most efficient in programs that require repeated access to different addresses in the same memory space The advantages of low level viPeek viPoke are E Individual viPeek viPoke calls are faster than viIn viOut or viMovelIn viMoveOut calls E Memory pointer may be directly dereferenced in some cases for the lowest possible overhead The disadvantages of low level viPeek viPoke are E viMapAddress Call is required to set up mapping before viPeek viPoke can be us
292. ion VI_ALL_ENABLED_EVENTS Disable all events that were previously enabled The following events can be disabled Event Name Description VI_EVENT_IO_COMPLETION Notification that an asynchronous operation has completed VI_EVENT_SERVICE_REQ Notification that a device is requesting service VI_EVENT_TRIG Notification that a hardware trigger was received from a device VI_EVENT_VXI_SIGP Notification that a VXI signal or VXI interrupt has been received from a device Special Values for mechanism Parameter Value Action Description VI_ALL MECH VI_HNDLR or VI_SUSPEND_HNDLR Disable this session from receiving the specified event s via any mechanism Disable this session from receiving the specified event s via a callback handler or a callback queue VI_QUEUE Disable this session from receiving the specified event s via the waiting queue Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Event disabled successfully VI_SUCCESS EVENT DIS Specified event is already disabled for at least one of the specified mechanisms 174 Chapter 7 See Also VISA Language Reference viDisableEvent Error Codes Description VI_ERROR_INV_EVENT Specified event type is not supported by the resource
293. ion command begins with the character For example the following is invalid status viVPrintf vi S1f d Chr 10 Instead you must make one call for each format conversion command as shown in the following example status viVPrintf vi slf Chr 10 dbl value status viVPrintf vi sd Chr 10 int value When reading to or writing from a numeric array you must specify the first element of a numeric array as the params parameter This passes the address of the first array element to the function For example the following code declares an array of 50 floating point numbers and then calls viVPrintf to write from the array Dim flt_array 50 As Double status viVPrintf id 50f dbl array 0 When reading in a string value with vivScanf or viVQueryf you must pass a fixed length string as the params parameter To declare a fixed length string instead of using the normal variable length declaration Dim strVal as String use the following declaration where 40 is the fixed length Dim strVal as String 40 24 Chapter 2 Steps to Run the Program Building a VISA Application in Windows Building a VISA Program Visual Basic Example VISA Program Visual Basic This section lists an example program called idn that queries a GPIB instrument for its identification string This example builds a Standard EXE application for WIN32 programs using the Visual Basic 6 0 programming language For
294. ion replace the old callback mechanism with the new callback mechanism Specifying VI_ALL ENABLED EVENTS for the eventType parameter refers to all events which have previously been enabled on this session making it easier to switch between the two callback mechanisms for multiple events Event queuing and callback mechanisms operate completely independently As such enabling and disabling of the two modes in done independently enabling one of the modes does not enable or disable the other mode For example if viEnableEvent is called once with VI_HNDLR and called a second time with VI_QUEUE both modes would be enabled If viEnableEvent is called with the mechanism parameter equal to the bit wise OR of VI_SUSPEND_HNDLR and VI_HNDLR viEnableEvent returns VI_ERROR_INV_MECH Chapter 7 179 Parameters VISA Language Reference viEnableEvent If the event handling mode is switched from VI_SUSPEND_HNDLR to VI_HNDLR for an event type handlers that are installed for the event are called once for each occurrence of the corresponding event pending in the session and dequeued from the suspend handler queue before switching the modes A session enabled to receive events can start receiving events before the viEnableEvent operation returns In this case the handlers set for an event type are executed before the completion of the enable operation If the event handling mode is switched from VI_HNDLR to VI_SUSPEND_HNDLR for an event type
295. ion return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INTR_PENDING An interrupt is still pending from a previous call VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_INTR The interface cannot generate an interrupt on the requested level or with the requested Status D value VI_ERROR_NSUP_MODE The specified mode is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access BACKPLANE Resource Description Chapter 7 159 Syntax Description Parameters VISA Language Reference viAssertTrigger viAssertTrigger viAssertTrigger ViSession vi ViUInt16 protocol NOTE This function is not supported with the GPIB VXI interface Assert software or hardware trigger This operation will source a software or hardware trigger dependent on the interface type For a GPIB device the device is addressed t
296. ion to respond to a specified event type using either the queuing mechanism the callback mechanism or both Similarly the viDisableEvent operation can be used to disable one or both mechanisms Because the two methods work independently of each other one can be enabled or disabled regardless of the current state of the other The following table shows the events that are implemented for Agilent VISA for each resource class where AP Access Privilege RO Read Only and RW Read Write Note that some resource classes events such as the SERVANT class are not implemented by Agilent VISA and are not listed in the following tables Once the application has received an event information about that event can be obtained by using the viGetAttribute function on that particular event context Use the VISA viReadSTB function to read the status byte of the service request Instrument Control INSTR Resource Events VI_EVENT_ SERVICE REQUEST Notification that a service request was received from the device Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO viEventType VI_EVENT_ event SERVICE_REQ Chapter 4 63 Programming with VISA Using Events and Handlers VI_EVENT_VXI_SIGP Notification that a VXlbus signal or VXlbus interrupt was received from the device Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYP
297. ionality integer must appear as a flag that specifies the number of elements by default bytes in the block A field width or precision modifier is not allowed with this format code asterisk An asterisk may be present instead of the count In such a case two args are used the first of which is a long integer specifying the count of the number of elements in the data block The second arg is a reference to the data block The size of an element is determined by the optional length modifier see below the default being byte width Length modifier h The data block is an array of unsigned short integers 16 bits The count corresponds to the number of words rather than bytes If the optional 01 byte order modifier is present the data is sent in little endian format Otherwise the data is sent in standard IEEE 488 2 format Data will be byte swapped and padded as appropriate if native computer representation is different 256 Chapter 7 VISA Language Reference viPrintf Flag or Modifier Interpretation Length Modifier The data block is an array of unsigned long integers 32 bits 1 The count corresponds to the number of longwords rather than bytes If the optional 01 byte order modifier is present the data is sent in little endian format otherwise the data is sent in standard IEE 488 2 format Data will be byte swapped and padded as appropriate if native computer representation is
298. ither a completion code or an error code as follows Completion Codes Description VI_SUCCESS The function completed successfully and the END indicator was received for interfaces that have END indicators VI_SUCCESS MAX CNT The number of bytes read is equal to count VI_SUCCESS TERM CHAR The specified termination character was read Error Codes Description VI_ERROR_ASRL_FRAMING A framing error occurred during transfer VI_ERROR_ASRL_OVERRUN VI_ERROR_ASRL_PARITY An overrun error occurred during transfer A character was not read from the hardware before the next character arrived A parity error occurred during transfer VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_FILE_ACCESS An error occurred while trying to open the specified file Possible reasons include an invalid path or lack of access rights VI_ERROR_FILE_IO An error occurred while accessing the specified file VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start read function because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC The interface associated with the given vi
299. language specific exception handling mechanism from within the VISA exception handler For example the C try catch block can be used in an application in conjunction with the C throw mechanism from within the VISA exception handler When using the C try catch throw or other exception handling mechanisms the control will not return to the VISA system This has several important repercussions 1 If multiple handlers were installed on the exception event the handlers that were not invoked prior to the current handler will not be invoked for the current exception 2 The exception context will not be deleted by the VISA system when a C exception is used In this case the application should delete the exception context as soon as the application has no more use for the context before terminating the session An application should use the viClose operation to delete the exception context 3 Code in any operation after calling an exception handler may not be called if the handler does not return For example local allocations must be freed before invoking the exception handler rather than after it One situation in which an exception event will not be generated is in the case of asynchronous operations If the error is detected after the operation is posted i e once the asynchronous portion has begun the status is returned normally via the I O completion event 84 Chapter 4 Programming with VISA Trapping Errors However
300. lid VI_ERROR_INV_SESSION The given sesn is not a valid session VI_ERROR_NSUP_OPER The given sesn does not support this function VI_ERROR_RSRC_NFOUND Specified expression does not match any devices viFlush vi mask Codes Description VI_SUCCESS VI_ERROR_INV_MASK Buffers flushed successfully The specified mask does not specify a valid flush operation on read write resource VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_IO Could not perform read write operation because of I O error VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO The read write operation was aborted because timeout expired while operation was in progress Appendix A 341 VISA Library Information VISA Error Codes viGetAttribute vi attribute attrState Codes Description VI_SUCCESS Resource attribute retrieved successfully VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given vi does not identify a valid session VI_ERROR_NSUP_ATTR The specified attribute is not defined by the referenced resource viGpibCommand vi buf count retCount Codes VI_SUCCESS Description Resource at
301. lowest precedence Agilent VISA does not support the use of logical expressions over all attribute values Chapter 7 189 VISA Language Reference viFindRsrc Special Character Meaning amp amp Logical AND II Logical OR Logical negation NOT Parentheses expr regularExpr attrExpr attrExpr attrTerm attrExpr attrTerm attrTerm attrFactor attrTerm amp amp attrFactor attrFactor attrExpr l attrFactor relationExpr relationExpr attributeId compareOp numValue attributeId equalityOp stringValue compareOp ne tj SS Vel t Vent equalityOp yout tit attributeId character character digit underscore numValue digit r adagieet Ox hex digit OX hex digitt stringValue eT character Tmi 190 Chapter 7 VISA Language Reference viFindRsrc Some examples are Expr Meaning GPIB 0 9 27 2 INSTR Find all GPIB devices that have secondary VI_ATTR_GPIB_SECONDARY_ADDR gt 0 addresses greater than 0 ASRL INSTR VI_LATTR_ASRL_BAUD 9600 Find all serial ports configured at 9600 baud VXI INSTR VI_LATTR_MANF_ID OxFF6 amp amp Find all VXI instrument resources whose 1 VI_ATTR_VXI_LA 0 VILATTR_SLOT lt 0 manufacturer ID is FF6 and who are not logical address 0 slot 0 or external controllers Local attributes are not allowed in the logical
302. lready enabled for at least one of the specified mechanisms Error Codes Description VI_ERROR_HNDLR_NINSTALLED VI_ERROR_INV_CONTEXT A handler is not currently installed for the specified event The session cannot be enabled for the VI_HNDLR mode of the callback mechanism Specified event context is invalid VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_NSUP_MECH The given session or object reference is invalid both are the same value The specified mechanism is not supported for the given event type See the handler prototype viEventHandler for its parameter description and viDisableEvent Also see the viInstallHandler and viUninstallHandler descriptions for information about installing and uninstalling event handlers 182 Chapter 7 Syntax Description VISA Language Reference viEventHandler viEventHandler viEventHandler ViSession vi ViEventType eventType ViEvent context ViAddr userHandle This is a prototype for a function which you define The function you define is called whenever a session receives an event and is enabled for handling events in the VI_HNDLR mode The handler services the event and returns VI_SUCCESS on completion VISA event handlers must be declared as follows ViStatus _VI_FUNCH MyEventHandler ViSession
303. lt values may affect your system s performance If you are having system performance problems you may need to edit the configuration and change some default values This section describes how to edit the configuration for VISA on Windows 95 Windows 98 Windows Me Windows 2000 and Windows NT and on HP UX When you first configured the Agilent IO Libraries the default configuration specified that all VISA devices would be identified at runtime However this configuration is not ideal for all users If you are experiencing performance problems particularly during viFindRsrc calls you may want to change the VISA configuration to identify devices during configuration This may be especially helpful if you are using a VISA LAN client To edit the default VISA configuration on Windows 95 98 Me 2000 or Windows NT 370 Appendix A Editing on HP UX VISA Library Information VISA Directories Information 1 If you have not already done so start Windows 95 98 2000 Me or Windows NT 2 Run the IO Config utility from the Agilent IO Libraries program group or from the blue IO icon on the taskbar use Run IO Config from the icon 3 Select the interface to be configured from the Configured Interfaces box and click the Edit button The Interface Edit window is now displayed 4 Click the Edit VISA Config button at the bottom of the window The dialog box which allows you to add devices is now displayed You can now manually identify de
304. ly regardless of the configured state of the hardware that is used to perform memory accesses Chapter 7 207 Parameters Return Values VISA Language Reference viln8 viln16 and viln32 For an INSTR resource the offset is a relative address of the device associated with the given INSTR resource For a MEMACC resource the offset parameter specifies an absolute address The offset specified in the viIn8 viIn16 and viIn32 operations for an INSTR resource is the offset address relative to the device s allocated address base for the corresponding address space specified For example if space specifies VI_A16_SPACE offset specifies the offset from the logical address base address of the VXI device specified If space specifies VI_A24_ SPACE or VI_A32_ SPACE offset specifies the offset from the base address of the VXI device s memory space allocated by the VXI Resource Manager within VXI A24 or A32 space Name Direction Type Description offset IN ViBusAddress Offset in bytes of the memory to read from space IN viUInt16 Specifies the address space See the following table val8 val16 OUT ViUInt8 Data read from bus 8 bits for or val32 ViUInt16 or viln8 16 bits for viIn16 and ViUInt32 32 bits for viIn32 vi IN viSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Compl
305. mapSize IN mapSpace IN ViBusSize ViUInt16 Specifies the address space to Amount of memory to map in bytes map suggested IN ViAddr If suggested parameter is not VI_NULL the operating system attempts to map the memory to the address specified in suggested There is no guarantee however that the memory will be mapped to that address This function may map the memory into an address region different from suggested vi IN Type viStatus vViSession session Unique logical identifier to a This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Map successful Chapter 7 217 See Also VISA Language Reference viMapAddress Error Codes Description VI_ERROR_ALLOC Unable to allocate window of at least the requested size VI_ERROR_INV_ACC_MODE Invalid access mode VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP VI_ERROR_INV_SIZE Unable to start operation because the setup is invalid due to attributes being set to an inconsistent state Invalid size of window specified VI_ERROR_INV_SPACE Invalid mapSpace specified VI_ERROR_NSUP_OFFSET Specified region is not accessible f
306. me is available this attribute returns an empty string VI_ATTR_TCPIP_DEVICE_ NAME This specifies the LAN device name used by the VXI 11 protocol during connection INSTR Resource Events This resource defines the following events for communication with applications where AP Access Privilege VILEVENT_SERVICE_REQUEST Notification that a service request was received from the device Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO viEventType event VI_EVENT_ SERVICE_REQ Appendix B 391 VISA Resource Classes Instrument Control INSTR Resource VI_EVENT_VXI_SIGP Notification that a VXlbus signal or VXIbus interrupt was received from the device Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ event VXI_STOP VI_ATTR_SIGP_ The 16 bit Status ID value RO viuInt16 0 to FFFFy STATUS_ID retrieved during the IACK cycle or from the Signal register VI_EVENT_TRIG Notification that a trigger interrupt was received from the device For VISA the only triggers that can be sensed are VXI hardware triggers on the assertion edge SYNC and ON trigger protocols only Event Attributes Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier ofthe RO ViEventType VI_E
307. mechanisms VI_ERROR_HNDLR_NINSTALLED VI_ERROR_INV_CONTEXT A handler is not currently installed for the specified event The session cannot be enabled for the VI_HNDLR mode of the callback mechanism Invalid event context specified VI_ERROR_INV_EVENT The specified event type is not supported by the resource VI_ERROR_INV_MECH Invalid mechanism specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given vi does not identify a valid session VI_ERROR_NSUP_MECH The specified mechanism is not supported for the given event type viEventHandler vi eventType context userHandle Codes Description VI_SUCCESS Event handled successfully 340 Appendix A viFindNext findList instrDesc VISA Library Information VISA Error Codes Codes Description VI_SUCCESS Resource s found VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given findList is not a valid session VI_ERROR_NSUP_OPER The given findList does not support this function VI_ERROR_RSRC_NFOUND There are no more matches viFindRsrc sesn expr findList retcnt instrDesc Codes Description VI_SUCCESS VI_ERROR_INV_EXPR Resource s found Invalid expression specified for search VI_ERROR_INV_OBJECT The given object reference is inva
308. med because the resource identified by vihas been locked for this kind of access See Also viFlush 284 Chapter 7 VISA Language Reference viSPrintf ay viSPrintf Syntax viSPrintf ViSession vi ViBuf buf viString writeFmt arg1 arg2 Description Same as viPrintf except the data are written to a user specified buffer rather than the device This operation is similar to viPrintf except that the output is not written to the device but is written to the user specified buffer This output buffer will be NULL terminated Ifthe viSPrintf operations outputs an END indicator before all the arguments are satisfied the rest of the writeFmt string will be ignored and the buffer string will still be terminated by a NULL Parameters Name Direction Type Description arg1 arg2 IN N A A list containing the variable number of parameters on which the format string is applied The formatted data are written to the specified device buf OUT ViBuf Buffer where data are to be written vi IN ViSession Unique logical identifier to a session writeFmt IN ViString The format string to apply to parameters in ViVAList Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Parameters were successfully formatted Chapter 7 285 VISA Language Refer
309. memory functions and the VXI interface to read the ID and Device Type registers of a device at VXI0 24 vxihl c This example program uses the high level memory functions to read the id and device type registers of the device at VXI0 24 Change this address if necessary The register contents are then displayed finclude lt visa h gt finclude lt stdlib h gt include lt stdio h gt void main 104 Chapter 5 Programming via GPIB and VXI Using High Level Memory Functions ViSession defaultRM dmm unsigned short id_reg devtype reg Open session to VXI device at address 24 viOpenDefaultRM amp defaultRM viOpen defaultRM VX1I0 24 INSTR VI _ NULL VI NULL amp dmm Read instrument id register contents viIn1l6 dmm VI_Al6 SPACE 0x00 amp id reg Read device type register contents viiInl6 dmm VI _ A16 SPACE 0x02 amp devtype_reg Print results printf ID Register 0x 4X n id reg printf Device Type Register 0x 4X n devtype_reg Close sessions viClose dmm viClose defaultRM Example Using the This program uses high level memory functions and the GPIB VXI interface GPIB VXI Interface High Level Memory Functions to read the ID and Device Type registers of a device at GPIB VXI0 24 gpibvxih c This example program uses the high level memory functions to read the id and device type registers of the device at
310. meout period viClose 240 Chapter 7 VISA Language Reference viOpenDefaultRM viOpenDefaultRM Syntax viOpenDefaultRM ViSession sesn Description This function returns a session to the Default Resource Manager resource This function must be called before any VISA functions can be invoked The first call to this function initializes the VISA system including the Default Resource Manager resource and also returns a session to that resource Subsequent calls to this function return unique sessions to the same Default Resource Manager resource NOTE All devices to be used must be connected and operational prior to the first VISA function call viOpenDefaultRM The system is configured only on the first viOpenDefau1tRM per process If viOpenDefaul tRM is first called without devices connected and then called again when devices are connected the devices will not be recognized You must close ALL Resource Manager sessions and reopen with all devices connected and operational Parameters Name Direction Type Description sesn OUT viSession Unique logical identifier to a Default Resource Manager session Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Session to the Default Resource Manager resource created successfully Chapter 7 241
311. mory functions to program to the device registers all you need to specify is the session identifier address space and the offset of the register Memory mapping is done for you For example in this function viln32 vi space offset val32 vi is the session identifier and offset is used to indicate the offset of the memory to be mapped offset is relative to the location of this device s memory in the given address space The space parameter determines which memory location to map the space Valid space values are E vI_A16_SPACE Maps in VXI MXI A16 address space E vI_A24_ SPACE Maps in VXI MXI A24 address space E vI_A32_SPACE Maps in VXI MXI A32 address space The val32 parameter is a pointer to where the data read will be stored If instead you write to the registers via the viOut32 function the val32 parameter is a pointer to the data to write to the specified registers If the device specified by vi does not have memory in the specified address space an error is returned The following example uses viIn16 ViSession defaultRM vi ViUInt1l6 value viOpenDefaultRM amp amp defaultRM viOpen defaultRM VXI 24 VI_ NULL VI_NULL amp vi vilInl6 vi VI_A1l6 SPACE 0x100 amp value Chapter 5 103 Using viMoveIn and viMoveOut Example Using the VXI Interface High Level Memory Functions Programming via GPIB and VXI Using High Level Memory Functions You can also use the viMoveIn and viMoveOut h
312. n vi ViUInt16 mask Manually flush the specified buffers associated with formatted I O operations and or serial communication The values for the mask parameter are Flag VI_IO_IN BUF Interpretation Discard receive buffer contents same as VI_IO_IN BUF DISCARD VI_IO_IN BUF_DISCARD Discard eceive buffer contents does not perform an I O to the device VI_IO_OUT_BUF Flush the transmit buffer by writing all buffered data to the device VI_IO_OUT_BUF_DISCARD Discard transmit buffer contents does not perform any I O to the device VI_READ_ BUF Discard the read buffer contents and if data was present in the read buffer and no END indicator was present read from the device until encountering an END indicator which causes the loss of data This action resynchronizes the next viScanf call to read a lt TERMINATED RESPONSE MESSAGE gt See the IEEE 488 2 standard VI_READ_BUF_DISCARD Discard read buffer contents does not perform any I O to the device VI_WRITE_BUF Flush the write buffer by writing all buffered data to the device VI_WRITE_BUF_DISCARD Discard write buffer contents does not perform any I O to the device It is possible to combine any of these read flags and write flags for different buffers by ORing the flags However combining two flags for the same buffer in the same call to viFlush is illegal When using formatted I O operations with a
313. nager session Call viClose vi Call viClose defrm End Sub Chapter 2 27 Example Program Contents Building a VISA Application in Windows Building a VISA Program Visual Basic A summary of the VISA function calls used in the example Visual Basic program follows For a more detailed explanation of VISA functionality see Chapter 4 Programming with VISA See Chapter 7 VISA Language Reference for more detailed information on these VISA function calls Function s Description viOpenDefaultRM You must first open a session with the default resource manager with the viOpenDefau1tRM function This function will initialize the default resource manager and return a pointer defrm to that resource manager session viOpen This function establishes a communication channel with the device specified A session identifier vi that can be used with other VISA functions is returned This call must be made for each device you will be using viVPrintf and These are the VISA formatted I O functions The viVPrintf call sends vivScanf the IEEE 488 2 RST command to the instrument plus a linefeed character and puts it in a known state The vivPrintf call is used again to query for the device identification IDN The vivVScanf call is then used to read the results strRes that are displayed in a Message Box viClose This function must be used to close each session When you close a device session all data
314. nager session will be closed Since system resources are also used when searching for resources viFindRsrc the viClose function needs to be called to free up find lists See Searching for Resources for more information on closing find lists 46 Chapter 4 Programming with VISA Using Sessions Searching for Resources When you open the default resource manager you are opening a parent session that knows about all the other resources in the system Since the resource manager session knows about all resources it has the ability to search for specific resources and open sessions to these resources You can for example search an interface for devices and open a session with one of the devices found Use the viFindRsrc function to search an interface for device resources This function finds matches and returns the number of matches found and a handle to the resources found If there are more matches use the viFindNext function with the handle returned from viFindRsrc to get the next match viFindRsrc sesn expr findList retcnt instrDesc viFindNext findList instrDesc viClose findList Where the parameters are defined as follows Parameter Description sesn The resource manager session expr The expression that identifies what to search see table that follows findList A handle that identifies this search This handle will then be used as an input to the viFindNext function when finding the nex
315. name INSTR TCPIP TCPIP board host address port SOCKET VXI VXI board VXI logical address INSTR VXI VXI board MEMACC VXI VXI board VXI logical address BACKPLANE 44 Chapter 4 Programming with VISA Using Sessions The following table describes the parameters used above Parameter Description board This optional parameter is used if you have more than one interface of the same type The default value for board is 0 host address The IP address in dotted decimal notation or the name of the host computer gateway LAN device name port The assigned name for a LAN device The default is inst The port number to use for a TCP IP Socket connection primary address This is the primary address of the GPIB device secondary address This optional parameter is the secondary address of the GPIB device If no secondary address is specified none is assumed VXI logical address This is the logical address of the VXI instrument Some examples of valid symbolic names follow Address String Description VX10 1 INSTR A VXI device at logical address 1 in VXI interface VXIO GPIB VXI 9 INSTR A VXI device at logical address 9 in a GPIB VXI controlled VXI system GPIB 1 0 INSTR A GPIB device at primary address 1 and secondary address 0 in GPIB interface 0 ASRL1 INSTR A serial device located on port 1
316. nction is invoked the program execution will suspend until the enabled event occurs or the timeout period specified is reached If the event has already occurred the viWaitOnEvent function will return immediately This example illustrates enabling a hardware trigger event viEnableEvent vi VI_EVENT TRIG VI_QUEUE VI_NULL The VI_QUEUE mechanism specifies that when an event occurs it will go into a queue If you specify VI_ALL_ ENABLE EVENTS in the eventType parameter all events that have previously been enabled on the specified session will be enabled for the mechanism specified in this function call Use the viDisableEvent function to stop servicing the event specified When using the viWaitOnEvent function specify the session the event type to wait for and the timeout period to wait viWaitOnEvent vi inEventType timeout outEventType outContext The event must have previously been enabled with VI_QUEUE specified as the mechanism parameter 78 Chapter 4 Example Wait on Event for SRQ Example Trigger Event Queuing Programming with VISA Using Events and Handlers This example shows how to install a wait on event for service requests viEnableEvent vi VI_EVENT SERVICE REQ VI_ QUEUE VI_NULL viWaitOnEvent vi VI_EVENT SERVICE REQ VI_TMO INFINITE amp eventType amp event viDisableEvent vi V
317. nd attributes that allow it to perform its dedicated task The SERVANT Resource exposes the device side functionality of the device associated with this resource Services are provided to receive blocks of data from a commander and respond with blocks of data in return setting a 488 style status byte and receiving device clear and trigger events Appendix B 413 VISA Resource Classes Servant Device Side SERVANT Resource SERVANT Resource Attributes Attribute Name Access Data Type Range Default Privilege Generic SERVANT Resource Attributes VI_ATTR_INTF_NUM RO Global viUInt16 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global viUInt16 VI_INTF_VXI N A VI_INTF_GPIB VI_INTF_TCPIP VI_ATTR_INTF_INST_ RO Global ViString N A N A NAME VI_ATTR_SEND_END _ RW Local ViBoolean VI_TRUE VI_TRUE EN VI_FALSE VI_ATTR_TERMCHAR RW Local viUInt8 0 to FF OAp linefeed VI_ATTR_TERMCHAR _ RW Local ViBoolean VI_TRUE VI_FALSE EN VI_FALSE VI_ATTR_TMO VALUE RW Local ViUInt32 VI_TMO_ IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO INFINITE VI_ATTR_DEV_STATUS RW Local ViInt16 0 to FFy N A _BYTE VI_ATTR_WR_BUF_ RW Local ViUInt16 VI_FLUSH_ON_ ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_WHEN_FULL WHEN_FULL VI_ATTR_DMA ALLOW _ RW Local ViBoolean VI_TRUE N A EN VI_FALSE VI_ATTR_RD BUF_ RW Local ViUInt16 VI_FLUSH_ON_ ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_ DISABLE DISABLE VI_ATTR_FILE_ RW Local ViBoolean VI_TRUE VI_FALSE APP
318. nd not functionality that behavior is acceptable VI_ATTR_RD_BUF_OPER_MODE Determines the operational mode of the read buffer When the operational mode is set to VI_FLUSH_DISABLE default the buffer is flushed only on explicit calls to viFlush VI_ATTR_FILE_APPEND_EN This attribute specifies whether viReadToFile will overwrite truncate or append when opening a file GPIB Specific SERVANT Resource Attributes VI_ATTR_GPIB_PRIMARY_ ADDR Primary address of local GPIB controller used by given session VI_ATTR_GPIB_SECONDARY_ADDR Secondary address of the local GPIB controller used by the given session VI_ATTR_GPIB_REN_STATE Returns the current state of the GPIB REN Remote ENable interface line VI_ATTR_GPIB_ADDR_STATE Shows whether the specified GPIB interface is currently addressed to talk to listen or to not addressed VXI Specific SERVANT Resource Attributes VI_ATTR_VXI_LA Logical address of the VXI or VME device used by the given session For a VME device the logical address is actually a pseudo address in the range 256 to 511 VI_ATTR_CMDR_LA Logical address of the commander of the VXI device used by the given session 416 Appendix B VISA Resource Classes Servant Device Side SERVANT Resource Attribute Name Description TCPIP Specific SERVANT Resource Attributes VI_ATTR_TCPIP_DEVICE_ NAME Specifies the LAN device name used
319. ndlr handler ViAddr userHandle Uninstall Handler viUninstallHandler ViSession vi ViEventType eventType ViHndlr handler ViAddr userHandle Event Handler Prototype viEventHandler ViSession vi ViEventType eventType ViEvent context ViAddr userHandle VXI Specific Series Send Device a Command Query and or Retrieve a Response viVxiCommandQuery ViSession vi ViUInt16 mode ViUInt32 cmd ViUInt32 response Searching Find Device viFindRsrc ViSession sesn ViString expr ViFindList findList ViUInt32 retcnt ViRsre instrDesc Find Next Device viFindNext ViFindList findList ViRsre instrDesc Parse Resource String to Get Interface Information viParseRsrc ViSession sesn ViRsre rsrcName VIUInt16 intfType VIUInt16 intfNum Basic I O Read Data from Device viRead ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Write Data to Device viWrite ViSession vi ViBuf buf ViUInt32 count ViUInt32 retCount Read Data Asynchronously from Device viReadAsync ViSession vi ViBuf buf ViUInt32 count ViJobId jobld Write Data Asynchronously to Device viWriteAsync ViSession vi ViBuf buf ViUInt32 count ViJobId jobld 154 Chapter 7 VISA Language Reference VISA Functions Overview Operation Function Type Parameter1 Type Parameter2 Basic I O continued Clear a Device viClear ViSession Vi
320. ned in the VISA Resource Template Although the TCPIP resource does not have viSetAttribute listed in its operations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its specific operations and attributes that allow it to perform its dedicated task The SOCKET Resource exposes the capability of a raw network socket connection over TCPIP This ususally means Ethernet but the protocol is not restricted to that physical interface Services are provided to send and receive blocks of data If the device is capable of communicating with 488 2 style strings an attribute setting also allows sending software triggers querying a 488 style status byte and sending a device clear message SOCKET Resource Attributes Attribute Name Generic SOCKET Resource Attributes Access Data Type Range Default Privilege VI_ATTR_INTF_NUM RO Global viuInt1 6 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global ViUInt16 VI_INTF_TCPIP VI_INTF_ TCPIP VI_ATTR_INTF_INST_ RO Global viString N A N A NAME VI_ATTR_SEND_END_ RW Local ViBoolean VI_TRUE VI_TRUE EN VI_FALSE 420 Appendix B VISA Resource Classes TCPIP Socket SOCKET Resource Attribute Name Access Data Type Range Default Privilege Generic SOCKET Resource Attributes continued VI_ATTR_TERMCHAR RW Local ViUInt8 0 to
321. nformation on addressing device sessions ViSession defaultRM vi viOpenDefaultRM amp defaultRM viOpen defaultRM GPIBO 23 INSTR VI NULL VI_NULL vi viClose vi viClose defaultRM Chapter 6 141 Example LAN Session Programming via LAN Communicating with GPIB Devices via LAN This program opens a session with a GPIB device and sends a comma operator to send a comma separated list The program is intended to show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Chapter 4 Programming with VISA for information on error trapping formatio c This example program makes a multimeter measurement with a comma separated list passed with formatted I O and prints the results Note that you must change the device address finclude lt visa h gt include lt stdio h gt void main ViSession defaultRM vi double res double list 2 1 0 001 Open session to GPIB device at address 22 viOpenDefaultRM amp defaultR M viOpen defaultRM GPIB0O 22 INSTR VI NULL VI_NULL amp vi Initialize device viPrintf vi RST n Set up device and send comma separated list viPrintf vi CALC DBM REF 50 n viPrintf vi MEAS VOLT AC 2 n list Read results viScanf vi Slf amp res Print results printf M
322. ng viOpen GPIBO 5 INSTR Open IO path to GPIB instrument at address 5 using 82350 Card 1 viOpen GPIBO0 3 INSTR Open IO path to GPIB instrument at address 3 using 82350 Card 1 aa GPIB1 3 INSTR Open IO path to GPIB instrument at address 3 using 82350 Card 2 a Chapter 5 97 Example VXI E8491B Interfaces Programming via GPIB and VXI GPIB and VXI Interfaces Overview VXI Interfaces Overview As shown in the following figure a typical VXI E8491 interface consists of an E8491 PC Card in a Windows PC that is connected to an E8491B IEEE 1394 Module in a VXI mainframe via an IEEE 1394 to VXI cable The VXI mainframe also includes one or more VXI instruments VXI E8491 Interfaces k Windows PC IEEE 1394 VXI Mainframe to VXI Vv Vv Vv x X X E 8 l l l 1 n n n E8491 PC Card s s s B t t t r r r 3 A The VXI interface system in the following figure consists of a Windows PC with an E8491 PC card that connects to an E8491B IEEE 1394 to VXI Module in a VXI Mainframe For this system the three VXI instruments shown have logical addresses 8 16 and 24 The IO Config utility has been used to assign the E8491 PC card a VISA name of VXI0 VISA addressing is as shown in the figure For information on the E8491B module see the Agilent E8491B User s Guide For information on VXI in
323. ng address space Value Description VI_A16_SPACE Address A16 memory address space of the VXI MXI bus VI_A24 SPACE Address A24 memory address space of the VXI MXI bus VI_A32_SPACE Address A32 memory address space of the VXI MXI bus VI_LOCAL_SPACE Address the process local memory using virtual address Valid entries for specifying widths Value Description VI_WIDTH_8 Performs an 8 bit D08 transfer VI_WIDTH_16 Performs a 16 bit D16 transfer VI_WIDTH_32 Performs a 32 bit D32 transfer 224 Chapter 7 Parameters VISA Language Reference viMove The high level operation viMove operates successfully independently from the low level operations viMapAddress viPeek8 viPeek16 viPeek32 viPoke8 viPokel16 and viPoke32 The high level and low level operations should operate independently regardless of the configured state of the hardware that is used to perform memory accesses The length specified in the viMove operation is the number of elements of the size corresponding to the operation to transfer beginning at the specified offset Therefore offset length size cannot exceed the amount of memory exported by the device in the given space If srcSpace is not VI_LOCAL SPACE srcOffset is a relative address of the device associated with the given INSTR resource Similarly if destspace is not VI_LOCAL_SPACE destOffset is a relative address of the device associated with t
324. ng tables describe optional modifiers that can be used in a format specifier sequence 272 Chapter 7 VISA Language Reference viScanf ANSI C Standard Modifiers Modifier Supported with Description Format Codes An integer s sc S It specifies the maximum field width that the argument will take A representing the field width format codes may also appear instead of the integer field width in which case the next arg is a reference to the field width This arg is a reference to an integer for c and s The field width is not allowed for d or A length modifier 1 h L zor Z z and Z are not ANSI C standard modifiers h d b format codes 1 d f b format codes L format code z Z b format code The argument length modifiers specify one of the following E The h modifier promotes the argument to be a reference to a short integer or unsigned short integer depending on the format code E The 1 modifier promotes the argument to point to a long integer or unsigned long integer E The L modifier promotes the argument to point to a long double floating point parameter E The z modifier promotes the argument to point to an array of floats E The Z modifier promotes the argument to point to an array of double floats asterisk All format codes An asterisk acts as the assignment suppression character The input is not assigned to any parameters and is discard
325. not exceed the total amount of memory available in the given space Name Direction Type Description buf8 IN ViAUInt8 Data written to bus 8 bits for buf16 ViAUInt16 or viMoveOuts 16 bits for or ViAUInt32 viMoveOut16 and 32 bits for buf32 viMoveOut32 length IN ViBusSize Number of elements to transfer where the data width of the elements to transfer is 8 bits for viMoveOuts 16 bits for viMoveOut16 or 32 bits for viMoveOut32 offset IN ViBusAddress Offset in bytes of the starting address or register to write to space IN viUInt16 Specifies the address space See the following table vi IN viSession Unique logical identifier to a session Chapter 7 235 VISA Language Reference viMoveOut8 viMoveOut16 and viMoveOut32 Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_LENGTH VI_ERROR_INV_OFFSET Invalid length specified Invalid offset specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsist
326. nt 16 timeouts LAN 143 trademark information 10 trigger lines 125 triggers and events 62 types VISA 325 U unmapping memory space 109 using the Debug Window 30 using the Event Viewer 29 using the Message Viewer 29 V viAssertlntrSignal 158 viAssertTrigger 160 viAssertUtilSignal 163 viBufRead 165 viBufWrite 167 viClear 169 viClose 171 viDisableEvent 173 viDiscardEvents 176 viEnableEvent 179 viEventHandler 183 viFindNext 188 viFindRsrc 189 viFlush 194 viGetAttribute 196 viGpibCommand 198 viGpibControlATN 200 viGpibControlREN 202 viGpibPassControl 204 viGpibSendlIFC 206 viln16 207 viln32 207 viln8 207 vilnstallHandler 210 viLock 212 viMapAddress 216 Index V continued viMapTrigger 219 viMemAlloc 221 viMemF ree 223 viMove 224 viMoveAsync 227 viMoveln16 231 viMoveln32 231 viMoveln8 231 viMoveOut16 234 viMoveOut32 234 viMoveOut8 234 viOpen 237 viOpenDefaultRM 241 viOut16 243 viOut32 243 viOut8 243 viParseRsrc 246 viPeek16 248 viPeek32 248 viPeek8 248 viPoke16 249 viPoke32 249 viPoke8 249 viPrintf 250 viQueryf 259 viRead 261 viReadAsync 264 viReadSTB 266 viReadToFile 268 VISA completion codes 331 description 15 directories information 368 documentation 16 error codes 331 336 functions 149 resource classes 39 support 15 types 325 users 15 visa h header file 41 viScanf 271 visSetAttribute 281 viSetBuf 28
327. nt is a long double or a reference to a long double z b B Corresponding argument is an array of floats or a reference to an array of floats B is only used with viPrintf or viQueryf writeFmt Z b B Corresponding argument is an array of double floats or a reference to an array of double floats B is only used with viPrintf or viQueryf writeFmt Hs Array Size The comma operator is a format modifier that allows you to read or write a comma separated list of numbers only valid with d and format codes It is a comma followed by an integer The integer indicates the number of elements in the array The comma operator has the format of dd where dd is the number of elements to read or write For viPrint or viQueryf writeFmt you can use an asterisk in place of the integer to indicate that the integer is taken from the next argument For viScanf or viQueryf readF mt you can use a sign to indicate that the next argument is a reference to the array size This example specifies a comma separated list to be sent to the session specified by vi int list 5 101 102 103 104 105 viPrintf vi S 5d n list Sends 101 102 103 104 105 Special Characters Special formatting character sequences will send special characters The following describes the special characters and what will be sent The format string for viPrintf and viQueryf writeFmt puts a special meaning on the newline
328. ntf vi RST n Send an IDN string to the device viPrintf vi IDN n Chapter 2 21 Example C C Program Contents Building a VISA Application in Windows Building a VISA Program C C Read results viScanf vi St buf Print results printf Instrument identification string s n buf Close session viClose vi viClose defaultRM A summary of the VISA function calls used in the example C C program follows For a more detailed explanation of VISA functionality see Chapter 4 Programming With VISA See Chapter 7 VISA Language Reference for more detailed information on these VISA function calls Function s Description visa h This file is included at the beginning of the file to provide the function prototypes and constants defined by VISA ViSession The ViSession is a VISA data type Each object that will establish a communication channel must be defined as ViSession viOpenDefaultRM You must first open a session with the default resource manager with the viOpenDefaultRM function This function will initialize the default resource manager and return a pointer to that resource manager session viOpen This function establishes a communication channel with the device specified A session identifier that can be used with other VISA functions is returned This call must be made for each device you will be using viPrintf and These are the VISA formatte
329. ntries for specifying address space are Value Description VI_A16_SPACE Address the A16 address space of VXI MXI bus VI_A24 SPACE Address the A24 address space of VXI MXI bus VI_A32_SPACE Address the A32 address space of VXI MXI bus The high level operations viOut8 viOut16 and vioOut32 operate successfully independently from the low level operations viMapAddress viPeek8 viPeek16 viPeek32 viPoke8 viPokel16 and viPoke32 The high level and low level operations should operate independently regardless of the configured state of the hardware that is used to perform memory accesses For an INSTR resource the offset is a relative address of the device associated with the given INSTR resource For a MEMACC resource the offset parameter specifies an absolute address Chapter 7 243 Parameters Return Values VISA Language Reference viOut8 viOut16 and viOut32 The offset specified in the viOut8 viOut16 and viOut32 operations for an INSTR resource is the offset address relative to the device s allocated address base for the corresponding address space specified For example if space specifies VI_A16 SPACE offset specifies the offset from the logical address base address of the VXI device specified If space specifies VI_A24 SPACE or VI_A32_ SPACE offset specifies the offset from the base address of the VXI device s memory space allocated by the VXI Resource Manager within VXI A24 or A32 space
330. nts the location of an integer that will be set to the number of bytes actually transferred vi IN ViSession Unique logical identifier to a session Special Value for retCount Parameter Value Action Description VI_NULL Do not return the number of bytes transferred Type viStatus This is the function return status It returns either a completion code or an error code as follows Chapter 7 165 See Also VISA Language Reference viBufRead Completion Codes Description VI_SUCCESS The operation completed successfully and the END indicator was received for interfaces that have END indicators VI_SUCCESS MAX CNT The number of bytes read is equal to count VI_SUCCESS TERM CHAR The specified termination character was read Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed viWrite viScanf 166 Chapter 7 Syntax Description Parameters VISA Language Reference viBufWrite viBuf
331. o a long integer Length modifier h arg is a reference to a short integer Rounding is performed according to IEEE 488 2 rules 0 5 and up functionality array size arg points to an array of integers or long or short integers depending on the length modifier of size array size The elements of this array should be separated by commas Elements will be read until either array size number of elements are consumed or they are no longer separated by commas f Argument type A reference to a floating point number Flags or Interpretation Modifiers Default Characters are read from the device until an entire number is read The number read must be in either IEEE 488 2 formats lt DECIMAL NUMERIC PROGRAM DATA gt NRf or lt NON DECIMAL NUMERIC PROGRAM DATA gt H Q and B field width Length modifier 1 The input number will be stored in a field at least this wide arg is a reference to a double floating point number Length modifier L arg is a reference to a long double number array size arg points to an array of floats or doubles or long doubles depending on the length modifier of size array size The elements of this array should be separated by commas Elements will be read until either array size number of elements are consumed or they are no longer separated by commas Chapter 7 275 VISA Language Reference viScanf s Argument type A
332. o in this case the actual number of elements read is stored back in the first argument In absence of length modifiers the data is assumed to be of byte size elements In some cases data might be read until an END indicator is read 276 Chapter 7 VISA Language Reference viScanf Flags or Interpretation Modifiers Length modifier The array is assumed to be an array of 16 bit words and count h refers to the number of words The data read from the interface is assumed to be in IEEE 488 2 big endian byte ordering It will be byte swapped and padded as appropriate to the native computer format Length modifier The array is assumed to be a block of 32 bit longwords rather 1 than bytes and count refers to the number of longwords The data read from the interface is assumed to be in IEEE 488 2 big endian byte ordering It will be byte swapped and padded as appropriate to the native computer format Length modifier The data block is assumed to be a reference to an array of z floats and count refers to the number of floating point numbers The data block received from the device is an array of 32 bit IEEE 754 format floating point numbers Length modifier The data block is assumed to be a reference to an array of Z doubles and the count refers to the number of floating point numbers The data block received from the device is an array of 64 bit IEEE 754 format floating point numbers t Argum
333. o listen and then the GPIB GET command is sent For a VXI device if VI_ATTR_TRIG ID is VI_TRIG_SwW the device is sent the Word Serial Trigger command For any other values of the attribute a hardware trigger is sent on the line corresponding to the value of that attribute For a GPIB device if VI_LATTR_TRIG_ID is VI_TRIG_ SW the device is addressed to Listen and a Group Execute Trigger GET is sent For a serial session to a Serial device or TCPIP socket if VI_ATTR_IO_PROT is VI_PROT_4882_STRS the device is sent the string TRG n Otherwise this operation is not valid In the Parameters table the protocol values are E vVI_TRIG_PROT_DEFAULT is VI_LTRIG PROT SYNC for VXI E vI_TRIG PROT_ON asserts the trigger E vI_TRIG PROT OFF deasserts the trigger E vVI_TRIG PROT SYNC pulses the trigger assert followed by deassert Name Direction Type Description protocol IN ViUInt16 Trigger protocol to use during assertion Valid values are VI_TRIG_PROT_DEFAULT VI_TRIG_PROT_ON VI_TRIG_PROT_OFF and VI_TRIG_PROT_SYNC vi IN ViSession Unique logical identifier to a session 160 Chapter 7 Return Values Type viStatus VISA Language Reference viAssertTrigger This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS The specified trigger was successfully asserted to the device Error Codes Desc
334. ocation vi IN viSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS The operation completed successfully Chapter 7 221 VISA Language Reference viMemAlloc Error Codes Description VI_ERROR_ALLOC Unable to allocate shared memory block of the requested size VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_INV_SIZE Invalid size specified VI_ERROR_MEM NSHARED The device does not export any memory VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also viMemFree 222 Chapter 7 Syntax Description Parameters Return Values See Also VISA Language Reference viMemF ree viMemFree viMemFree ViSession vi ViBusAddress offset NOTE This function is not implemented in Agilent VISA This function frees the memory previously allocated using viMemAlloc Name Direction Type Description offset IN ViBusAddress Specifies the memory previously allocated with viMemAlloc vi IN vViSession Unique logical identifier to a session Type Vi
335. of access VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_OFFSET VI_ERROR_INV_SETUP Invalid offset specified Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE Invalid address space specified VI_ERROR_NSUP_ALIGN_OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware 352 Appendix A VISA Library Information VISA Error Codes viParseRsrc sesn rsrcName intfType intfNum Codes Description VI_SUCCESS Resource string is valid VI_ERROR_ALLOC Insufficient system resources to parse the string VI_ERROR_INTF_NUM_NCONFIG The interface type is valid but the specified interface number is not configured VI_ERROR_INV_RSRC_NAME Invalid resource reference specified Parsing error VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_LIBRARY_NFOUND The given session or object reference is invalid both are the same value A code library required by VISA could not be located or loaded VI_ERROR_NSUP_OPER The given sesn does not support this operation For VISA this operation is supported only by the Default Resource Manager session VI_ERROR_RSRC_NFOUND
336. ol vi primAddr secAddr viGpibSendIFC v viPrintf vi writeFmt arg1 arg2 viRead vi buf count retCount viReadAsync vi buf count jobld viReadToFile vi fileName count retCount viScanf vi readFmt arg1 arg2 viSetBuf vi mask size viSPrintf vi buf writeFmt arg1 arg2 viSScanf vi buf readFmt arg1 arg2 viVPrintf vi writeFmt params viVScanf vi readFmt params vivsPrint vi buf writeFmt params vivsScanf vi buf readFmt params viWrite vi buf count retCount viWriteAsync vi buf count jobld viWriteFromFile vi fileName count retCount 408 Appendix B VISA Resource Classes VXI Mainframe Backplane BACKPLANE Resource VXI Mainframe Backplane BACKPLANE Resource This section describes the VXI Mainframe Backplane BACKPLANE Resource that encapsulates the VXI defined operations and properties of the backplane in a VXlbus system BACKPLANE Resource Overview A VISA VXI Mainframe Backplane Resource like any other resource starts with the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute which is defined in the VISA Resource Template Although the BACKPLANE resource does not have viSetAttribute listed in its operations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its speci
337. ollowed by the VISA function name man function The following are examples of selecting online help on VISA functions man viPrintf man viScanf man viPeek 36 Chapter 3 Programming with VISA Programming with VISA This chapter describes how to program with VISA The basics of VISA are described including formatted I O events and handlers attributes and locking Example programs are also provided and can be found in the SAMPLES subdirectory on Windows environments or in the examples subdirectory on HP UX See Appendix A VISA Library Information for the specific location of the example programs on your operating system For specific details on VISA functions see Chapter 7 VISA Language Reference This chapter contains the following sections VISA Resources and Attributes Using Sessions Sending I O Commands Using Events and Handlers Trapping Errors Using Locks 38 Chapter 4 Programming with VISA VISA Resources and Attributes VISA Resources and Attributes This section introduces VISA resources and attributes including mM VISA Resources E VISA Attributes 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 fully compliant with the VX plug amp play Systems Alliance specification can implement Each resource class includes E Attributes to determine the state of
338. om the device If the array size contains a sign two arguments are used The first argument read is a pointer to a long integer specifying the maximum number of elements that the array can hold The second argument should be a reference to an array Also in this case the actual number of elements read is stored back in the first argument In the absence of length modifiers the data is assumed to be of byte size elements In some cases data might be read until an END indicator is read Length modifier h The data block is assumed to be a reference to an array of unsigned short integers 16 bits The count corresponds to the number of words rather than bytes If the optional o1 byte order modifier is present the data being read is assumed to be in little endian format otherwise the data being read is assumed to be in standard IEE 488 2 format Data will be byte swapped and padded as appropriate to native computer format 278 Chapter 7 Parameters VISA Language Reference viScanf Flags or Interpretation Modifiers Length Modifier The data block is assumed to be a reference to an array of 1 unsigned long integers 32 bits The count corresponds to the number of longwords rather than bytes If the optional o1 byte order modifier is present the data being read is assumed to be in little endian format Otherwise the data being read is assumed to be in standard IEE 488 2 format Data will
339. omma operator The fourth arg parameter is the value to be converted itself For ANSI C compatibility the following conversion codes are also supported for output codes These codes are i o u n x X e E g G and p For further explanation of these conversion codes see the ANSI C Standard 250 Chapter 7 VISA Language Reference viPrintf Special Formatting Characters Special formatting character sequences send special characters The following table lists the special characters and describes what they send to the device n Sends the ASCII LF character The END identifier will also be automatically sent r Sends an ASCII CR character t Sends an ASCII TAB character H H Sends the ASCII character specified by the octal value Ne Sends the ASCII double quote character Sends a backslash character Format Specifiers The format specifiers convert the next parameter in the sequence according to the modifier and format code after which the formatted data is written to the specified device The format specifier has the following syntax modifiers format code where format code specifies which data type in which the argument is represented The modifiers are optional codes that describe the target data In the following tables a d format code refers to all conversion codes of type integer d i o u x X unless specified as d only Similarly an f forma
340. on Code Description VI_SUCCESS Event handler installed successfully Error Codes Description VI_ERROR_HNDLR_NINSTALLED The handler was not installed This may be returned if an application attempts to install multiple handlers for the same event on the same session VI_ERROR_INV_EVENT Specified event type is not supported by the resource VI_ERROR_INV_HNDLR_REF The given session or object reference is VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given handler reference is invalid invalid both are the same value viEventHandler Chapter 7 211 Syntax Description VISA Language Reference viLock viLock viLock ViSession vi ViAccessMode lockType ViUInt32 timeout ViKeyId requestedKey VikKeyId accessKey NOTE The viLock function is not supported on network devices This function is used to obtain a lock on the specified resource The caller can specify the type of lock requested exclusive or shared lock and the length of time the operation will suspend while waiting to acquire the lock before timing out This function can also be used for sharing and nesting locks The requestedKey and accessKey parameters apply only to shared locks These parameters are not applicable when using the lock type VI_EXCLUSIVE_LOCK In this case requestedKey and accessKey should be set to VI_NULL VISA allows user applications to specify a key to be used for lock shar
341. on and shows applicable VISA viOpen commands See Chapter 7 VISA Language Reference for details on the VISA commands NOTE You must install a LAN Client interface BEFORE you can use a VISA LAN Client interface See Configuring LAN Client Interfaces for details on configuring LAN Client interfaces The VISA LAN Client interface system in the following figure consists of a Windows PC with a LAN card an E2050 LAN GPIB gateway and two GPIB instruments The IO Config utility has been used to assign the LAN card a VISA name of TCPIPO In addition a VISA LAN Client has been configured with the interface names and host names shown in the figure Also the E2050 LAN GPIB Gateway has been assigned a name of machine1 and an hpib name hpib Since unique names have been assigned by IO Config you can now use the VISA viOpen command to open the I O paths to the GPIB instruments as shown in the figure 136 Chapter 6 Programming via LAN LAN Interfaces Overview A VISA LAN Client Gateway k Interface VISA Names Windows PC LAN GPIB Gateway GPIB Instruments machine1 VISA Name fs hpib name hpib a VISA LAN Client GPIB1 GPIB1 z lan machine1 hpib Lee eee E2050 7 TCPIPO 3 LAN Card LAN GPIB Cable VISA LAN Client Parameters VISA Interface Name GPIB1 LAN Client SICL Interface Name lan Remote Host Name
342. ons where AP Access Privilege VILEVENT_IO_COMPLETION Notification that an asynchronous operation has completed generating the event Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ event IO COMPLETION VI_ATTR_STATUS Return code of the asynch RO ViStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of a buffer that was RO ViBuf N A used in an asynchronous operation VI_ATTR_RET COUNT Actual number of elements that RO viUInt32 0 to FFFFFFFF were asynchronously transferred VI_ATTR_OPER_NAME Name of the operation RO viString N A 400 Appendix B VISA Resource Classes Memory Access MEMACC Resource MEMACC Resource Operations viln8 vi space offset val8 viIn16 vi space offset val16 vilIn32 vi space offset val32 viMapAddress vi mapSpace mapBase mapSize access suggested address viMove vi srcSpace srcOffset srcWidth destSpace destOffset destWidth length viMoveAsync vi srcSpace srcOffset srcWidth destSpace destOffset destWiath length jobld viMovelIn8 vi space offset length buf8 viMoveIn16 vi space offset length buf16 viMovelIn32 vi space offset length buf32 viMoveOuts8 vi space offset length buf8 viMoveOut16 vi sp
343. ontroller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW RD PROT VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viAssertUtilSignal vi line Timeout expired before function completed Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_LINE The value specified by the line parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viBufRead vi buf count retCount Timeout expired before operation completed Codes Description VI_SUCCESS The operation completed successfully and the END indicator was received for interfaces that have END indicators VI_SUCCESS TERM CHAR The specified termination
344. or 0 118 usDesc vi ERROR inDatal6 kDatal6 addr addr16 tus offset EXIT viOpenDefa stat stat sta OxSlx 0 US US CUS o ultRM buf s n s n 0 viOpen viOpen amp drm 3 statu e DefaultRM EFMACC Resour EXIT Ve T S errstr EXIT ce vxi0 memacc VI NULL VI_NULL Chapter 5 Programming via GPIB and VXI Using the Memory Access Resource Calculate the A16 offset of the VXI REgisters for the device at VXI logical address 8 offset 0xc000 64 8 Open a map to all of Al6 memory space status viMapAddress vi VI A16 SPACE 0 0x10000 VI_FALSE 0 ViPAddr amp addr checkError vi status viMapAddress EXIT Offset the address pointer retruned from viMapAddress for use with viPeekl6 addr1l6 ViUInt16 addr offset Peek the contents of the card s ID register offset 0 from card s base address Note that viPeek does not return a status code viPeek1l6 vi addrl6 amp peekDatal6 Now use vilnl6 and read the contents of the same register status vilInl6 vi VI_Al6 SPAC ViBusAddress offset amp inDatal checkError vi status vilInl6 NO EXIT Gl Print the results printf inDatal6 0x 04hx n inDatal6 printf peekDatal6 ox s04hx n peekDatal v
345. or loaded VI_ERROR_NSUP_OPER The given sesn does not support this operation For VISA this operation is supported only by the Default Resource Manager session VI_ERROR_RSRC_NFOUND Insufficient location information or resource not present in the system viFindRsrc viOpen Chapter 7 247 VISA Language Reference viPeek8 viPeek16 and viPeek32 viPeek8 viPeek16 and viPeek32 Syntax viPeek8 ViSession vi ViAddr addr ViUInt8 val8 viPeek16 ViSession vi ViAddr addr ViUInt16 val16 viPeek32 ViSession vi ViAddr addr ViUInt32 val32 Description This function reads an 8 bit 16 bit or 32 bit value from the address location specified in addr The address must be a valid memory address in the current process mapped by a previous viMapAddress Call Parameters Name _ Direction Type Description addr IN ViAddr Specifies the source address to read the value val8 OUT ViUInts Data read from bus 8 bits for viPeek8 val16 or ViUInt16 16 bits for viPeek16 and 32 bits for val32 or viPeek32 ViUInt32 vi IN viSession Unique logical identifier to a session NOTE ViAddr is defined as a void To do pointer arithmetic you must cast this to an appropriate type ViUInt8 ViUInt16 or ViUInt32 Then be sure the offset is correct for the type of pointer you are using For example ViUInt8 addr 4 points to the same location as ViUInt16 addr 2 Return
346. ove 32 bit Value from Local Memory to Device Memory viMoveOut32 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt32 buf32 Map Memory Space viMapAddress ViSession vi ViUInt16 mapSpace ViBusAddress mapBase ViBusSize mapSize ViBoolean access ViAddr suggested ViAddr address Unmap Memory Space viUnmapAddress ViSession Vi Read 8 bit Value from Address viPeek8 ViSession vi ViAddr addr ViUInt8 val8 amp Read 16 bit Value from Address viPeek16 ViSession vi ViAddr addr ViUInt16 val16 Read 32 bit Value from Address viPeek32 ViSession vi ViAddr addr ViUInt32 val32 Write 8 bit Value to Address Write 16 bit Value to Address viPoke8 ViSession vi ViAddr addr ViUInt8 val8 amp viPokel6 ViSession vi ViAddr addr ViUInt16 val16 Write 32 bit Value to Address viPoke32 ViSession vi ViAddr addr ViUInt32 val32 GPIB Specific Services Control GPIB REN Interface Line viGpibControlREN ViSession vi ViUInt16 mode Control GPIB ATN Interface Line viGpibControlATN ViSession vi ViUInt16 mode Write GPIB Command Bytes on the bus viGpibCommand ViSession Vi ViBuf buf ViUInt32 count ViUInt32 retCount Tell GPIB Device to Become Controller in Charge CIC viGpibPassControl ViSession vi ViUInt16 primAddr ViUInt16 secAddr Pulse Interface Clear IFC Line viGpibSendIFC ViSession Vi
347. peration has Description completed VI_EVENT_SERVICE_REQ Notification that a device is requesting service VI_EVENT_TRIG Notification that a hardware trigger was received from a device VI_EVENT_VXI_SIGP Notification that a VXI signal or VXI interrupt has been received from a device Special Values for mechanism Parameter Value Action Description VI_HNDLR Enable this session to receive the specified event via a callback handler which must have already been installed via viInstallHandler VI_QUEUE Enable this session to receive the specified event via the waiting queue Events must be retrieved manually via the viWaitOnEvent function VI_SUSPEND_HNDLR Enable this session to receive the specified event via a callback queue Events will not be delivered to the session until viEnableEvent is invoked again with the VI_HNDLR mechanism NOTE mechanism Any combination of VISA defined values for different parameters of this function is also supported except for VI_HNDLR and VI_SUSPEND_HNDLR which apply to different modes of the same Chapter 7 181 Return Values See Also VISA Language Reference viEnableEvent Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Event enabled successfully VI_SUCCESS_EVENT_EN Specified event is a
348. perform its dedicated task such as sending a string to a message based device The INSTR Resource lets a controller interact with the device associated with this resource by providing the controller with services to send blocks of data to the device request blocks of data from the device send the device clear command to the device trigger the device and find information about the device s status In addition it allows the controller to access registers on devices that reside on memory mapped buses Appendix B 377 VISA Resource Classes Instrument Control INSTR Resource INSTR Resource Attributes Attribute Name Access Data Type Range Default Privilege Generic INSTR Resource Attributes VI_ATTR_INTF_NUM RO Global ViUInt16 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global ViUInt16 VI_INTF_VXI N A VI_INTF_GPIB VI_INTF_GPIB_VXI VI_INTF_ASRL VI_INTF_TCPIP VI_ATTR_INTF_INST_ RO Global viString N A N A NAME VI_ATTR_IO PROT RW Local ViUInt16 VI_NORMAL VI_NORMAL VI_FDC VI_HS488 VI_PROT_488 2 STRS VI_ATTR_RD BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_ DISABLE DISABLE VI_ATTR_SEND_END__ RW Local ViBoolean VI_TRUE VI_TRUE EN VI_FALSE VI_ATTR_SUPPRESS _ RW Local ViBoolean VI_TRUE VI_FALSE END_EN VI_FALSE VI_ATTR_TERMCHAR RW Local viUInt8 0 to FF 0A linefeed VI_ATTR_TERMCHAR _ RW Local ViBoolean VI_TRUE VI_FALSE EN VI_FALSE VI_ATTR_TMO VALUE RW Local ViUInt32 VI_TMO
349. phone line is ringing 390 Appendix B VISA Resource Classes Instrument Control INSTR Resource Attribute Name Description ASRL Specific INSTR Resource Attributes continued VI_ATTR_ASRL_RTS_STATE This attribute is used to manually assert or unassert the Request To Send RTS output signal When the VI_ATTR_ASRL_FLOW_CNTRL attribute is set to VI_ASRL_FLOW_RTS_ CTS this attribute is ignored when changed but can be read to determine whether the background flow control is asserting or unasserting the signal VI_ATTR_ASRL_REPLACE_ CHAR This attribute specifies the character to be used to replace incoming characters that arrive with errors Such as parity error VI_ATTR_ASRL_XON_CHAR This attribute specifies the value of the XON character used for XON XOFF flow control both directions If XON XOFF flow control software handshaking is not being used the value of this attribute is ignored VI_ATTR_ASRL_XOFF_CHAR This attribute specifies the value of the XOFF character used for XON XOFF flow control both directions If XON XOFF flow control software handshaking is not being used the value of this attribute is ignored TCPIP Specific INSTR Resource Attributes VI_ATTR_TCPIP_ADDR VI_ATTR_TCPIP_HOSTNAME This is the TCPIP address of the device to which the session is connected This string is formatted in dot notation This specifies the host name of the device If no host na
350. printf viMovelInl6 2 ID Register 0x 4X n memArray 1 Close sessions viClose vi viClose defaultRM 116 Chapter 5 High Level Memory I O Services Low Level Memory I O Services Programming via GPIB and VXI Using the Memory Access Resource Using the Memory Access Resource For VISA 1 1 and later the Memory Access MEMACC Resource type has been added to VXI and GPIB VXI VXI MEMACC and GPIB VXI MEMACC allow access to all of the A16 A24 and A32 memory by providing the controller with access to arbitrary registers or memory addresses on memory mapped buses The MEMACC resource like any other resource starts with the basic operations and attributes of other VISA resources For example modifying the state of an attribute is done via the the operation viSetAttribute see Appendix B VISA Resource Classes for details Memory I O Services Memory I O services include high level memory I O services and low level memory I O services High level Memory I O services allow register level access to the interfaces that support direct memory access such as the VXlbus VMEbus MXlbus or even VME or VXI memory through a system controlled by a GPIB VXI controller A resource exists for each interface to which the controller has access You can access memory on the interface bus through operations such as viIn16 and viOut16 These operations encapsulate the map unmap and peek poke operations found in the low lev
351. ption event handler is called whenever an error occurs while executing an operation The exception handling model follows the event handling model for callbacks and it uses the same operations as those used for general event handling For example an application calls viInstallHandler and viEnableEvent to enable exception events The exception event is like any other event in VISA except that the queueing and suspended handler mechanisms are not allowed Chapter 4 83 Programming with VISA Trapping Errors When an error occurs for a session operation the exception handler is executed synchronously That is the operation that caused the exception blocks until the exception handler completes its execution The exception handler is executed in the context of the same thread that caused the exception event When invoked the exception handler can check the error condition and instruct the exception operation to take a specific action It can instruct the exception operation to continue normally by returning VI_SUCCESS or to not invoke any additional handlers in the case of handler nesting by returning VI_SUCCESS_NCHAIN As noted an exception operation blocks until the exception handler execution is completed However an exception handler sometimes may prefer to terminate the program prematurely without returning the control to the operation generating the exception VISA does not preclude an applicationfrom using a platform specific or
352. put line VI_TRIG_PANEL OUT Unmap the controller s front panel trigger output line VI_TRIG TTLO VI_TRIG TTL7 Unmap the specified VXI TTL trigger line Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Error Codes Operation completed successfully Description VI_ERROR_INV_LINE One of the specified lines trigSrc or trigDest is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_LINE One of the specified lines trigSrc or trigDest is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TRIG_NMAPPED The path from trigSrc to trigDest is not currently mapped See Also BACKPLANE Resource Description Chapter 7 297 VISA Language Reference viVPrintf viVPrintf Syntax viVPrintf ViSession vi ViString writeFmt ViVAList params Description This function converts formats and sends params to the device as specified by the format string This function is similar to viPrint except that the ViVAList parameters list pro
353. r 6 131 Programming via LAN LAN Interfaces Overview The LAN software is built on top of standard LAN networking protocols There are two LAN networking protocols provided with the Agilent IO Libraries software You can use one or both of these protocols when configuring your systems via Agilent IO Libraries configuration to use VISA over LAN E SICL LAN Protocol is a networking protocol developed by Agilent that is compatible with all VISA LAN products This LAN networking protocol is the default choice in the Agilent IO Libraries configuration when configuring the LAN client The SICL LAN protocol on HP UX 10 20 Windows 95 98 Me 2000 NT supports VISA operations over LAN to GPIB interfaces E VXI 11 TCP IP Instrument Protocol is a networking protocol developed by the VXIbus Consortium based on the SICL LAN Protocol that permits interoperability of LAN software from different vendors who meet the VXIbus Consortium standards When using either of these networking protocols the LAN software uses the TCP IP protocol suite to pass messages between the LAN client and the LAN server The server accepts device I O requests over the network from the client and then proceeds to execute those I O requests on a local interface GPIB etc By default the LAN Client supports both protocols by automatically detecting the protocol the server is using When a VISA viOpen is performed the LAN Client driver first tries to connect using the SICL
354. r terminates This operation is useful for sending data that was already processed and or formatted VISA uses ANSI C file operations so the mode used by viWriteFromFile is rb If you pass VI_NULL as the retCount parameter to the viWriteFromFile operation the number of bytes transferred will not be returned This may be useful if it is important to know only whether the operation succeeded or failed Name Direction Type Description count IN ViUInt32 Number of bytes to be written fileName IN viConstString Name of file to which data will be read retCount OUT viUInt32 Number of bytes actually transferred vi IN viSession Unique logical identifier to a session Special Value for retCount Parameter Value Description VI_NULL Do not return the number of bytes transferred Chapter 7 321 Return Values See Also VISA Language Reference viWriteFromFile Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Transfer completed Error Codes Description VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT VI_ERROR_NSUP_OPER The given session or object reference is invalid both are the same value The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vihas
355. rations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its specific operations and attributes that allow it to perform its dedicated task such as reading a register or writing to a memory location The MEMACC Resource lets a controller interact with the interface associated with this resource It does this by providing the controller with services to access arbitrary registers or memory addresses on memory mapped buses Appendix B 395 VISA Resource Classes Memory Access MEMACC Resource MEMACC Resource Attributes Attribute Name Access Data Type Range Default Privilege Generic MEMACC Resource Attributes VI_ATTR_INTF_NUM RO Global viUInt16 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global viUInt16 VI_INTF_VXI N A VI_INTF_GPIB_VXI VI_ATTR_INTF_INST_ RO Global ViString N A N A NAME VI_ATTR_TMO VALUE RW Local ViUInt32 VI_TMO_ IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO INFINITE VI_ATTR_DMA ALLOW_ RW Local ViBoolean VI_TRUE N A EN VI_FALSE VXI and GPIB VXI Specific MEMACC Resource Attributes VI_ATTR_VXI_LA RO Global viInt16 0 to 255 N A VI_ATTR_SRC_ RW Local ViInt32 Oto1 1 INCREMENT VI_ATTR_DEST_ RW Local VilInt32 Oto 1 1 INCREMENT VI_ATTR_WIN_ACCESS RO Local ViUInt16 VI_NMAPPED VI_NMAPPED VI_USE_OPERS VI_DEREF_ADDR VI_ATTR_WIN_BASE _ RO Local ViBusAddr N A N A ADDR ess VI_ATTR_WIN_SIZE RO Local ViBusSize N
356. re operations in other threads may complete normally before the operation viTerminate has any effect the specified return value is not guaranteed Name Direction Type Description degree IN ViUInt16 VI_NULL jobld IN ViJdobId Specifies an operation identifier vi IN ViSession Unique logical identifier to an object Type viStatus This is the function return status It returns either a completion code or an error code as follows 290 Chapter 7 See Also VISA Language Reference viTerminate Completion Code Description VI_SUCCESS Request serviced successfully Error Codes Description VI_ERROR_ABORT Calls in the current process executing on the specified vi are aborted VI_ERROR_INV_DEGREE Invalid degree specified VI_ERROR_INV_JOB_ID Invalid job identifier specified VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value viReadAsync viWriteAsync viMoveAsync Chapter 7 291 Syntax Description Parameters VISA Language Reference viUninstallHandler viUninstallHandler viUninstallHandler ViSession vi ViEventType eventType ViHndlr handler ViAddr userHandle This function allows applications to uninstall handlers for events on sessions Applications should also specify the value in the userHandle parameter that was passed to viInstallHandler while installin
357. reference to a string Flags or Interpretation Modifiers Default All leading white space characters are ignored Characters functionality are read from the device into the string until a white space character is read field width This flag gives the maximum string size If the field width contains a sign two arguments are used The first argument read gives the maximum string size The second should be a reference to a string In the case of field width characters already read before encountering a white space additional characters are read and discarded until a white space character is found In the case of field width the actual number of characters read are stored back in the integer pointed to by the first argument Enhanced Format Codes functionality b Argument type A reference to a data array Flags or Interpretation Modifiers Default The data must be in IEEE 488 2 lt ARBITRARY BLOCK PROGRAM DATA gt format The format specifier sequence should have a flag describing the array size which will give a maximum count of the number of bytes or words or longwords depending on length modifiers to be read from the device If the array size contains a sign two arguments are used Default functionality continued The first argument read is a pointer to a long integer specifying the maximum number of elements that the array can hold The second one should be a reference to an array Als
358. returns immediately If the specified event has not occurred the program suspends execution until a specified event occurs or until the specified timeout period is reached Example Using the This example program shows one way you can use the queuing method Queuing Method main ViSession vi ViEventTyp ventType ViEvent event viEnableEvent vi VI_EVENT SERVICE REQ VI QUEUE VI_NULL viWaitOnEvent vi VI_EVENT SERVICE REQ VI_TMO_ INFINITE amp eventType amp event viClose event viDisableEvent vi VI_EVENT SERVICE REQ VI QUEUE Chapter 4 77 Enabling Events Example Enabling a Hardware Trigger Event Wait on the Event Programming with VISA Using Events and Handlers Before an event can be delivered it must be enabled using the viEnableEvent function viEnableEvent vi eventType mechanism context where the parameters are defined as follows Parameter Description vi The session the handler will be installed on eventType The type of event to enable mechanism The mechanism by which the event will be enabled Specify VI_QUEUE to use the queuing method context Not used in VISA 1 0 Use VI_NULL When you use VI_QUEUE in the mechanism parameter you are specifying that the events will be put into a queue Then when a viWaitOnEvent fu
359. ric GPIB Raw GPIB interface operations INTFC reading writing triggering etc Memory Access Generic GPIB VXI VXI Address space of a memory mapped MEMACC bus such as the VXlIbus VXI Mainframe Backplane Generic GPIB VXI VXI VXI defined operations and BACKPLANE GPIB VXI Backplane properties of each backplane or not supported chassis in a VXlbus system Servant Device Side Not Supported Operations and properties of the Resource SERVANT GPIB VXI TCPIP capabilities of a device and a device s view of the system in which it exists TCPIP Socket Generic TCPIP Operations and properties of a raw SOCKET network socket connection using TCPIP Appendix B 375 VISA Resource Classes Resource Classes Overview Interface Types vs Resource Classes This table shows the five interface types supported by Agilent VISA and the associated Resource Classes for each interface type Interface Type Supported Resource Classes ASRL Instrument Control INSTR GPIB Instrument Control INSTR GPIB Bus Interface INTFC GPIB VXI Instrument Control INSTR Memory Access MEMACC TCPIP Instrument Control INSTR TCPIP Socket SOCKET VXI Instrument Control INSTR Memory Access MEMACC VXI Mainframe Backplane BACKPLANE Resource Class Descriptions The following sections describe each of the six Resource Classes supported by VISA As noted the SERVANT Resource Class is not supported by Agilent VI
360. rintf Timeout Occurred Event not received n return printf Got second event n close the context before continuing viClose eventVi disable event viDisableEvent vi VI_EVENT TRIG VI QUEUE close the sessions viClose vi viClose defaultRM Chapter 4 81 Example Check for VI_ SUCC Example Printing ESS Error Code Programming with VISA Trapping Errors Trapping Errors This section gives guidelines to trap errors including E Trapping Errors E Exception Events Trapping Errors The example programs in this guide show specific VISA functionality and do not include error trapping Error trapping however is good programming practice and is recommended in all your VISA application programs To trap VISA errors you must check for VI_SUCCESS after each VISA function call If you want to ignore WARNINGS you can test to see if err is less than lt VI_SUCCESS Since WARNINGS are greater than VI_SUCCESS and ERRORS are less than VI_SUCCESS err_handler would only be called when the function returns an ERROR For example if err lt VI_SUCCESS err handler vi err This example illustrates checking for VI_SUCCESS If VI_SUCCESS is not returned an error handler written by the programmer is called This must be done with each VISA function call ViStatus err err viPrintf vi RST n if err lt VI_SUC
361. ription VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_CONN_LOST The I O connection for the given session has been lost VI_ERROR_INP_PROT_VIOL VI_ERROR_INV_PROT Device reported an input protocol error occurred during transfer The protocol specified is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP VI_ERROR_LINE_IN_USE Unable to start operation because setup is invalid due to attributes being set to an inconsistent state The specified trigger line is currently in use VI_ERROR_NCIC The interface associated with the given vi is not currently the controller in charge VI_ERROR_NLISTENERS No Listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RAW_RD_PROT_VIOL Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer Chapter 7 161 VISA Language Reference viAssertTrigger Error Codes Description VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before function completed See Also VI_ATTR_TRIG_ID attribute Set thi
362. rmat codes E The maximum number of digits after the decimal point in case of format codes E Maximum numbers of characters for the string s specifier E Maximum significant digits for g format code An argument length modifier h 1 L z and Z are legal values z and Z are not ANSI C standard flags h d b B format codes 1 d f b B format codes L format codes Z Z b B format codes The argument length modifiers specify one of the following E The h modifier promotes the argument to a short or unsigned short depending on the format code type E The 1 modifier promotes the argument to a long or unsigned long E The L modifier promotes the argument to a long double parameter E The z modifier promotes the argument to an array of floats E The z modifier promotes the argument to an array of doubles 252 Chapter 7 VISA Language Reference viPrintf Enhanced Modifiers to ANSI C Standards Modifier Supported with Description Format Code A comma d plus variants The corresponding argument is interpreted as a reference to followed by an integer n where n represents the and only the first element of an array of size n The first n elements of this list are printed in the format specified by the format code array size An asterisk may be present after the modifier in which case an extra arg is used This arg must b
363. rmat specifier in the readFmt string is not supported Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before read operation completed viSetAttribute vi attribute attrState Codes Description VI_SUCCESS VI_ERROR_ATTR_READONLY All attribute values set successfully The specified attribute is read only VI_ERROR_ATTR_READONLY The specified attribute is read only VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_NSUP_ATTR The specified attribute is not defined by the referenced resource VI_ERROR_NSUP_ATTR_STATE The specified state of the attribute is not valid or is not supported as defined by the resource VI_ERROR_RSRC_LOCKED The specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_WARN_NSUP_ATTR_STATE Although the specified state of the attribute is valid it is not supported by this resource implementation 358 Appendix A viSetBuf vi mask size VISA Library Information VISA Error Codes Codes Description VI_SUCCESS Buffer size set successfully VI_WARN_NSUP_BUF The specified buffer is not supported VI_ERROR_ALLOC The system could not allo
364. rmatted I O functions that synchronously transfer data called viRead and viWrite and two that asynchronously transfer data called viReadAsync and viWriteAsync These are raw I O functions and do not intermix with the formatted I O functions See Using Non Formatted I O in this chapter See Chapter 7 VISA Language Reference for more information on how data is converted under the control of the format string Chapter 4 49 Formatted I O Functions Formatted I O Conversion Programming with VISA Sending I O Commands As noted the VISA formatted I O functions are viPrintf viQueryf and viScanf E The viPrint functions format according to the format string and send data to a device The viPrint function sends separate arg parameters while the viVPrintf function sends a list of parameters in params viPrintf vi writeFmt arg1 arg2J vivPrintf vi writeFmt params E The viScanf functions receive and convert data according to the format string The viScanf function receives separate arg parameters while the viVScanf function receives a list of parameters in params viScanf vi readFmtf arg1 arg2 f vivScanf vi readFmt params E The viQueryf functions format and send data to a device and then immediately receive and convert the response data Hence the viQueryf function is a combination of the viPrint f and viScanf functions Similarly the vivQuery f function is a combination of th
365. rollers Appendix B 411 VISA Resource Classes VXI Mainframe Backplane BACKPLANE Resource BACKPLANE Resource Events This resource defines the following events for communication with applications where AP Access Privilege VI_EVENT_TRIG Notification that a trigger interrupt was received from the backplane For VISA the only triggers that can be sensed are VXI hardware triggers on the assertion edge SYNC and ON trigger protocols only Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_TRIG event VI_ATTR_RECV_TRIG_ The identifier of the triggering RO viInt16 VI_TRIG TTLO to ID mechanism on which the VI_TRIG TTL7 specified trigger event was VI_TRIG _ECLO to received VI_TRIG ECL1 VI_EVENT_VXI_VME_SYSFAIL Notification that the VXI VME SYSFAIL line has been asserted Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_vVxI_ event VME_SYSFAIL VI_LEVENT_VXI_VME_SYSRESET Notification that the VXI VME SYSRESET line has been reset Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_VXI_ event VME_SYSRESET BACKPLANE Resource Operations viAssertTrigger vi protocol viMapTrigger vi trigSrc trigDe
366. rom this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO viMapAddress could not acquire resource or perform mapping before the timer expired VI_ERROR_WINDOW_MAPPED viUnmapAddress 218 The specified session already contains a mapped window Chapter 7 Syntax Description Parameters viMapTrigger VISA Language Reference viMapTrigger viMapTrigger ViSession vi ViInt16 trigSrc ViInt16 trigDest ViUInt16 mode Map the specified trigger source line to the specified destination line This operation can be used to map one trigger line to another This operation is valid only on VXI Backplane BACKPLANE sessions If this operation is called multiple times on the same BACKPLANE resource with the same source trigger line and different destination trigger lines the result should be that when the source trigger line is asserted all specified destination trigger lines should also be asserted If this operation is called multiple times on the same BACKPLANE resource with different source trigger lines and the same destination trigger line the result should be that when any of the specified source trigger lines is asserted the destination trigger line should also be asserted However mapping a trigger line as eit
367. rtTrigger vi VI_TRIG PROT SYNC T unenable and uninstall the handler viDisableEvent vi VI_EVENT TRIG VI_HNDLR viUninstallHandler vi VI_EVENT TRIG myHdlr ViAddr 10 close the sessions viClose vi viClose defaultRM This program installs an event handler and enables an SRQ event When the event occurs the installed event handler is called This example program is intended to show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Trapping Errors in this chapter This program is installed on your system in the SAMPLES subdirectory on Windows environments or in the examples subdirectory on HP UX See Appendix A VISA Library Information for locations of example programs on your operating system 74 Chapter 4 Programming with VISA Using Events and Handlers srqhdlr c This example program illustrates installing an event handler to be called when an SRO interrupt occurs Note that you may need to change the address include lt visa h gt include lt stdio h gt if defined _ WIN32 include lt windows h gt for Sleep define YIELD Sleep 10 elif defined _BORLANDC_ include lt windows h gt for Yield define YIELD Yield
368. s EXCLUSIVE nested exclusive locks VI_SUCCESS_NESTED_ The call succeeded but this session still has SHARED nested shared locks Error Codes Description VI_ERROR_INV_SESSION The given vi does not identify a valid session or VI_ERROR_INV_OBJECT object VI_ERROR_SESN_NLOCKED The current session did not have any lock on the resource See Also viLock For more information on locking see Chapter 4 Programming with VISA 294 Chapter 7 Syntax Description Parameters Return Values See Also VISA Language Reference viUnmapAddress viUnmapAddress viUnmapAddress ViSession Vi This function unmaps memory space previously mapped by the viMapAddress function Name Direction Type Description vi IN ViSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_WINDOW_NMAPPED The specified session is not currently mapped viMapAddress Chapter 7 295 Syntax Description Parameters VISA Language Reference viUnmapTrigger viUnmapTrigger viUnmapTrigger ViSession ViInt16
369. s a commercial item as defined in FAR 2 101 a or as Restricted computer software as defined in FAR 52 227 19 Jun 1987 or any equivalent agency regulation or contract clause whichever is applicable You have only those rights provided for such Software and Documentation by the applicable FAR or DFARS clause or the Agilent standard software agreement for the product involved Trademark Information Microsoft Windows 95 Windows 98 Windows Me Windows 2000 and Windows NT are U S registered trademarks of Microsoft Corporation All other brand and product names are trademarks or registered trademarks of their respective companies Printing History Edition 1 May 1996 Edition 2 September 1996 Edition 3 February 1998 Edition 4 July 2000 Edition 5 August 2001 Copyright Information Agilent Technologies VISA User s Guide Edition 5 Copyright 1984 1988 Sun Microsystems Inc Copyright 1996 1998 2000 2001 Agilent Technologies Inc All rights reserved 10 Introduction Introduction This Agilent Technologies VISA User s Guide describes the Agilent Virtual Instrument Software Architecture VISA library and shows how to use it to develop instrument drivers and I O applications on Windows 95 Windows 98 Windows Me Windows NT 4 0 and Windows 2000 and on HP UX version 10 20 This chapter includes E Whats in This Guide E VISA Overview NOTE Before you can use VIS
370. s attribute to the trigger mechanism trigger line to use VI __EVENT_ TRIGGER description for details on trigger specifiers 162 Chapter 7 VISA Language Reference viAssertUtilSignal Le viAssertUtilSignal Syntax viAssertUtilSignal ViSession vi ViUInt16 line Description Asserts the specified utility bus signal This operation can be used to assert either the SYSFAIL or SYSRESET utility bus interrupts on the VXlbus backplane This operation is valid only on VXI Mainframe Backplane BACKPLANE and on Servant Device Side SERVANT resource sessions NOTE This function is not supported in Agilent VISA Asserting SYSRESET also known as HARD RESET in the VXI specification should be used only when it is necessary to promptly terminate operation of all devices in a VXlbus system This is a serious action that always affects the entire VXlbus system Parameters Name Direction Type Description line IN ViUInt16 Specifies the utility bus signal to assert This can be the value VI_UTIL_ASSERT_SYSRESET VI_UTIL_ASSERT_SYSFAIL or VI_UTIL_DEASSERT_SYSFAIL vi IN ViSession Unique logical identifier to a session Return Values Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Chapter 7 163 VISA Language Reference viAssertUtilSignal
371. s from consecutive elements If this attribute is set to 0 the viMoveInxx operation will always read from the same element essentially treating the source as a FIFO register VI_ATTR_DEST_INCREMENT This is used in the viMoveOutxx operation to specify how much the destination offset is to be incremented after every transfer The default value of this attribute is 1 that is the destination address will be incremented by 1 after each transfer and the viMoveOutxx operation moves into consecutive elements If this attribute is set to 0 the viMoveOutxx operation will always write to the same element essentially treating the destination as a FIFO register 398 Appendix B VISA Resource Classes Memory Access MEMACC Resource Attribute Name Description VXI and GPIB VXI Specific MEMACC Resource Attributes continued VI_ATTR_WIN_ACCESS Modes in which the current window may be accessed not currently mapped through operations viPeekxx and viPokexx only or through operations and or by directly dereferencing the address parameter as a pointer VI_ATTR WIN BASE ADDR Base address of the interface bus to which this window is mapped VI_ATTR_WIN_SIZE Size of the region mapped to this window VI_ATTR_SRC_BYTE_ORDER This attribute specifies the byte order to be used in high level access operations such as viInXxX and viMoveInxx when reading from the source VI_ATTR_DEST_BYTE O
372. s not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viln8 viln16 viln32 viPoke8 viPoke16 viPoke32 viMoveOut8 viMoveOut16 viMoveOut32 Chapter 7 245 Syntax Description Parameters VISA Language Reference viParseRsrc viParseRsrc viParseRsrc ViSession sesn ViRsrce rsrcName VIUInt16 intflype VIUInt16 intfNum Parse a resource string to get the interface information This operation parses a resource string to verify its validity It should succeed for all strings returned by viFindRsrc and recognized by viOpen This operation is useful if you want to know what interface a given resource descriptor would use without actually opening a session to it The values returned in intfType and intfNum correspond to the attributes VI_ATTR_INTF_TYPE and VI_ATTR_INTF_NUM These values would be the same if a user opened that resource with viOpen and queried the attributes with viGetAttribute If a VISA implementation recognizes aliases in viOpen it also recognizes those same aliases in viParseRsrc Calling viParseRsrc with VXI 1 INSTR will produce the same results as invoking it with VxiTinstr NOTE A VISA implementation should not perform any I O to the specified resource during this operation The
373. s of a buffer used in an asynchronous operation VI_ATTR_RET_COUNT Actual number of elements that were asynchronously transferred 122 Chapter 5 Programming via GPIB and VXI Using VXI Specific Attributes Using VXI Specific Attributes VXI specific attributes can be useful to determine the state of your VXI system Attributes are read only and read write Read only attributes specify things such as the logical address of the VXI device and information about where your VXI device is mapped this section shows how you might use some of the VXI specific attributes See Appendix B VISA Resource Classes for information on VISA attributes Using the Map Address as a Pointer The VI_ATTR_WIN_ACCESS read only attribute specifies how a window can be accessed You can access a mapped window with the VISA low level memory functions or with a C pointer if the address is de referenced To determine how to access the window read the VI_ATTR_WIN_ACCESS attribute VI_ATTR_WIN_ The VI_ATTR_WIN_ACCESS read only attribute can be set to one of the ACCESS Settings following Setting Description VI_NMAPPED Specifies that the window is not mapped VI_USE_OPERS Specifies that the window is mapped and you can only use the low level memory functions to access the data VI_DEREF_ADDR Specifies that the window is mapped and has a de referenced address In this case you can use the low level memory
374. sAddress Offset of the starting address or register to write to destSpace IN ViUInt16 Specifies the address space of the destination destWidth IN ViUInt16 Specifies the data width of the destination 228 Chapter 7 VISA Language Reference viMoveAsync Name Direction Type Description jobld OUT ViJobIid Represents the location of an integer that will be set to the job identifier of this asynchronous move operation Each time an asynchronous move operation is called it is assigned a unique job identifier length IN ViBusSize Number of data elements to transfer where the data width of the elements to transfer is identical to the source data width srcOffset IN ViBusAddress Offset of the starting address or register from which to read srcSpace IN viUInt16 Specifies the address space of the source srcWidth IN viUInt16 Specifies the data width of the source vi IN vViSession Unique logical identifier to a session Special value for job d P arameter Value Description VI_NULL Operation does not return a job identifier Return Values Type ViStatus This is the operational return status It returns either a completion code or an error code as follows Completion Codes Description VI_SUCCESS Asynchronous operation completed successfully VI_SUCCESS SYNC Operation Perfome
375. scellaneous commands to any or all devices In addition the controller can directly query and manipulate specific lines on the bus and also pass control to other devices with controller capability INTFC Resource Attributes Attribute Name Access Data Type Range Default Privilege Generic INTFC Resource Attributes VI_ATTR_INTF_NUM RO Global ViUInt16 0 to FFFF 0 VI_ATTR_INTF_TYPE RO Global ViUInt16 VI_INTF_GPIB VI_INTF_ GPIB VI_ATTR_INTF_INST_ RO Global viString N A N A NAME VI_ATTR_SEND_END _ RW Local ViBoolean VI_TRUE VI_TRUE EN VI_FALSE 402 Appendix B VISA Resource Classes GPIB Bus Interface INTFC Resource Attribute Name Access Data Type Range Default Privilege Generic INTFC Resource Attributes continued VI_ATTR_TERMCHAR RW Local viUInt8 0 to FFh OA p linefeed VI_ATTR_TERMCHAR _ RW Local ViBoolean VI_TRUE VI_FALSE EN VI_FALSE VI_ATTR_TMO VALUE RW Local ViUInt32 VI_TMO_ IMMEDIATE 2000 msec 1 to FFFFFFFE VI_TMO INFINITE VI_ATTR_DEV_STATUS RW Global ViUInt8 0 to FFy N A _BYTE VI_ATTR_WR_BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_WHEN_FULL WHEN_FULL VI_ATTR_DMA ALLOW_ RW Local ViBoolean VI_TRUE N A EN VI_FALSE VI_ATTR_RD BUF_ RW Local ViUInt16 VI_FLUSH_ON_ACCESS VI_FLUSH_ OPER_MODE VI_FLUSH_DISABLE DISABLE VI_ATTR_FILE_ RW Local ViBoolean VI_TRUE VI_FALSE APPE
376. scssenneeeusves 29 Using the Debug Window sssssesssssseeerreeerernssseerrneerrrnneeeernnas 30 3 Building a VISA Application in HP UX cccccceseeesseeeeeeeeeeeeeeeeeees 31 Building a VISA Program in HP UX wirccciciasersteriarretiaamercecrawverees 33 Example Source Code a accsisnsenesiicsspacatanleneenduhtiemacaeiiceenaadh sane 33 Example Program COntents ssisiisisaiiirsrsinsiissisisussrnniossst 34 Running the Example Program c cccccesseeeceessneeeeeeneees 34 Compiling and Linking a VISA Program 35 Logging Error MESSAGCS ii sesees cisssceeceees sismeewus rnani nnes 35 Using Online Help sissrsessissinanis 36 Using the HyperHelp Viewer asssssseerreesrssesseerrrnerrrrreseernne 36 Using HP UX Manual Page siccsccsssiacei soon sec scons sans sonntaeverves 36 Contents 3 A Programming with VISA a iassigseticasntsseettnccdcainssnotetertnnentcerrnnbnceesenwonen 37 VISA Resources and Attributes ccccceeeecccceeeeeeccceeenseccaeeeneees 39 VISA ROSON O ana andeietnaeianenins 39 VIO AUDU TS rra 40 Di EEEE OA E a E E A E E S 41 Including the VISA Declarations File C C ee 41 Adding the visa32 bas File Visual Basic eeeeeee 41 CII a SSI ieran slay sanuneenynaonsrnduareninaeen 41 Addressing A SESSION scacciansacinincneeiaheaniinnenns 44 JCS a SOON casa cited neater naun meso 46 S arching for RESOUNGES cnccminawmeasimmaimeaneumnaiee 47 Sending VO CONS ensi 49 ea E E E E E eres 49 Using Formal UI
377. serial device a flush of the formatted I O buffers also causes the corresponding serial communication buffers to be flushed For example calling viFlush with VI_WRITE_BUF also flushes the VI_IO_OUT_BUF 194 Chapter 7 Parameters Return Values See Also VISA Language Reference viFlush For backward compatibility VI_IO_IN_BUF is the same as VI_ASRL_IN_BUF VI_IO_IN_BUF_DISCARD is the same as VI_ASRL_IN_BUF_DISCARD VI_IO_ OUT_BUF is the same as VI_ASRL_OUT_BUF and VI_IO_OUT_BUF_DISCARD is the same as VI_ASRL_OUT_BUF_DISCARD Name Direction Type Description mask IN viUInt16 Specifies the action to be taken with flushing the buffer See the following table vi IN ViSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Buffers flushed successfully Error Codes Description VI_ERROR_INV_MASK The specified mask does not specify a valid flush function on read write resource VI_ERROR_INV_SESSION The given session or object reference is invalid VI_ERROR_INV_OBJECT both are the same value VI_ERROR_IO Could not perform read write function because of I O error VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO
378. session is invalid VI_ERROR_QUEUE_ERROR Unable to queue read operation Appendix A 355 VISA Library Information VISA Error Codes Codes Description VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viReadSTB vi status Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR VI_ERROR_INV_OBJECT VI_ERROR_INV_SESSION Bus error occurred during transfer The given object reference is invalid The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_NCIC vi does not refer to an interface that is currently the controller in charge VI_ERROR_NLISTENERS VI_ERROR_NSUP_OPER VI_ERROR_RAW_RD_PROT_VIOL No listeners condition is detected both NRFD and NDAC are deasserted The given vi does not support this function Violation of raw read protocol occurred during transfer VI_ERROR_RAW WR_PROT_VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_SRQ_NOCCURRED Service request has not been received for the session VI_ERROR_TMO
379. sing High level vilM VIOU scsiccicscsesiousteeseaius ieee scerionsiecaes 113 Using High level viMoveln viMoveOut 113 Contents 4 Using the Memory Access ReSOUICE 2 0eceeeeeeeeeteeeteees 117 Memory VO Services s scersissscnnessstiniairaccngieasteatdianiaeanibins 117 MEMACC Attribute Descriptions cccceeeeeeteteeeees 120 Using VXI Specific Attributes sisscsiissisissiiisiserriirniseroirsrerisss 123 Using the Map Address as a Pointer cceeeeeeeees 123 Setting the VXI Trigger LINE ssiisrsssiiriisrsiesiiiiinasnniiass 125 6 Programming via LAN sssisssusenncrinseiresnussieseunnissorrsvuuenuissniireeesis 127 LAN Interfaces Overview eneren neiaa 129 LAN Hardware Architecture cccccessesseesecceceeeeeeeeteees 129 LAN Software Architecture cccecceseeeseeseccneeeeeeeeeetes 131 LAN Client Interface Overview c eseeeseececeeeeeeeeeeees 133 VISA LAN Client Interface Overview esseeeeeeeees 136 LAN Server Interface Overview e seceteeeeeeeeeeeees 140 Communicating with GPIB Devices via LAN 141 Addressing a Sessio sessiossa 141 Using Timeouts over LAN scscrenasnneuarnrnsennon 143 LAN Signal Handling on HP UX sssseesseireseerrrsseeeresn 145 7 VISA Language Reference uusssssssssennunnnrnnunnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 147 YISA Functions Vey sessast RENNER 149 VISA Functions by Interface Resource
380. so VISA Language Reference viVSScanf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NSUP_FMT A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viSScanf viVScanf Chapter 7 307 Syntax Description Parameters VISA Language Reference viVxiCommandQuery viVxiCommandQuery viVxiCommandQuery ViSession vi ViUInt16 mode ViUInt32 cmd ViUInt32 response Send the device a miscellaneous command or query and or retrieve the response to a previous query This operation can send a command or query or receive a response to a query previously sent to the device The mode parameter specifies whether to issue a command and or retrieve a response and what type or size of command and or response to use If the mode parameter specifies sending a 16 bit command the upper half of the cmd parameter is ignored If the mode parameter specifies just retrieving a response the cmd parameter is ignored If the mode parameter specifies sending a command only the r
381. soft Visual Studio or equivalent application View error messages in the Visual Studio or equivalent output window Chapter 2 Building a VISA Application in HP UX 31 Building a VISA Application in HP UX This chapter gives guidelines to build a VISA application on HP UX version 10 20 or later The chapter contains the following sections H Building a VISA Program in HP UX E Using Online Help 32 Chapter 3 Building a VISA Application in HP UX Building a VISA Program in HP UX Building a VISA Program in HP UX This section lists and example program called idn that queries a GPIB instrument for its identification string The idn example program is located in the following subdirectory opt vxipnp hpux hpvisa share examples Example Source Code The source file idn c follows An explanation of the various function calls in the example is provided directly after the program listing iAnwC This program queries a GPIB device for an ID string and prints the results Note that you must change the address include lt visa h gt include lt stdio h gt void main ViSession defaultRM vi char buf 256 0 Open session to GPIB device at address 22 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIB0O 24 INSTR VI_NULL VI_NULL amp vi Initialize device viPrintf vi RST n Send an IDN string to the device viPrintf vi IDN n Read results
382. source Event Attribute Description AP Data Type Range VI_ATTR_RECV_ TCPIP_ADDR The TCPIP address of the RO viString N A device from which the session received a connection SERVANT Resource Operations viBufRead vi buf count retCount viBufWrite vi buf count retCount viFlush vi mask viPrint vi writeFmt arg1 arg2 viRead vi buf count retCount viReadAsync vi buf count jobld viReadToFile vi fileName count retCount viScanf vi readFmt arg1 arg2 viSetBuf vi mask size viSPrintf vi buf writeFmt arg1 arg2 viSScanf vi buf readFmt arg1 arg2 viVPrintf vi writeFmt params viVScanf vi readFmt params vivsPrint vi buf writeFmt params vivSScanf vi buf readFmt params viWrite vi buf count retCount viWriteAsync vi buf count jobld viWriteFromFile vi fileName count retCount Appendix B 419 VISA Resource Classes TCPIP Socket SOCKET Resource TCPIP Socket SOCKET Resource This section describes the TCPIP Socket SOCKET Resource that encapsulates the operations and properties of the capabilities of a raw network socket connection using TCPIP SOCKET Resource Overview A VISA SOCKET Resource like any other resource starts with the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute which is defi
383. st mode viUnmapTrigger vi trigSrc trigDest 412 Appendix B VISA Resource Classes Servant Device Side SERVANT Resource Servant Device Side SERVANT Resource This section describes the Servant Device Side SERVANT Resource that encapsulates the operations and properties of the capabilities of a device and a device s view of the system in which it exists NOTE The SERVANT Resource is not implemented in Agilent VISA The SERVANT resource is a class for advanced users who want to write firmware code that exports device functionality across multiple interfaces Most VISA users will not need this level of functionality and should not use the SERVANT resource in their applications A VISA user of the TCPIP SERVANT resource should be aware that each VISA session corresponds to a unique socket connection If the user opens only one SERVANT session this precludes multiple clients from accessing the device SERVANT Resource Overview A VISA Servant Resource like any other resource starts with the basic operations and attributes of the VISA Resource Template For example modifying the state of an attribute is done via the operation viSetAttribute which is defined in the VISA Resource Template Although the SERVANT resource does not have viSetAttribute listed in its operations it provides the operation because it is defined in the VISA Resource Template From this basic set each resource adds its specific operations a
384. ster to read from 232 Chapter 7 Return Values See Also VISA Language Reference viMoveln8 viMoveln16 and viMoveln32 Name Direction Type Description space IN ViUInt16 Specifies the address space See the following table vi IN ViSession Unique logical identifier to a session Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code VI_SUCCESS Description Operation completed successfully Error Codes Description VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_LENGTH Invalid length specified VI_ERROR_INV_OFFSET VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT Invalid offset specified The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE Invalid address space specified VI_ERROR_NSUP_ALIGN_ OFFSET The specified offset is not properly aligned for the access width of the operation VI_ERROR_NSUP_OFFSET Specified offset is not accessible from this hardware VI_ERROR_NSUP_OPER The given vi does not support this function VI_ERROR_NSUP_WIDTH Specified width is not supported by this hardware VI_ERROR_RSRC_LOCKED Specified operation could no
385. structures that had been allocated for the session will be deallocated When you close the default manager session all sessions opened using that default manager session will be closed 28 Chapter 2 Building a VISA Application in Windows Logging Error Messages Logging Error Messages When developing or debugging your VISA application you may want to view internal VISA messages while your application is running You can do this by using the Message Viewer utility for Windows 95 98 Me the Event Viewer utility for Windows 2000 NT or the Debug Window for Windows 95 98 2000 Me NT There are three choices for VISA logging E off default for best performance E Event Viewer Message Viewer E Debug Window Using the Event Viewer For Windows 2000 or Windows NT the Event Viewer utility provides a way to view internal VISA error messages during application execution Some of these internal messages do not represent programming errors and are actually error messages from VISA which are being handled internally by VISA The process to use the Event Viewer is E Enable VISA logging from the Agilent IO Libraries Control click VISA Logging Event Viewer E Run your VISA program E View VISA error messages by running the Event Viewer From the Agilent IO Libraries Control click Run Event Viewer VISA error messages will appear in the application log of the Event Viewer utility Using the Message Viewer For Windows 95 W
386. struments GPIB bus 130 Chapter 6 Programming via LAN LAN Interfaces Overview LAN Software Architecture An IO interface can be defined as both a hardware interface and as a software interface You can use the IO Config utility to associate a unique interface name with a hardware interface The IO Libraries use an Interface Name or Logical Unit Number to identify an interface This information is passed in the parameter string of the viOpen function call ina VISA program IO Config assigns an Interface Name and Logical Unit Number to the interface hardware as well as other necessary configuration values for an interface when the interface is configured See the Agilent IO Libraries Installation and Configuration Guide for Windows for details on using IO Config As shown in the following figure the client system contains the LAN client software and the LAN software TCP IP needed to access the server gateway The gateway contains the LAN server software LAN TCP IP software and the instrument driver software needed to communicate with the client and to control the instruments or devices connected to the gateway Client VISA System Server Gateway Instrument Application LAN Server Instrument Firmware Agilent VISA TCP 1 Instrument SICL IP Driver LAN Client LAN Interface TCP IP LAN Interface GPIB bus or other Xe po Chapte
387. struments see the applicable VXI Instrument User s Guide 98 Chapter 5 Programming via GPIB and VXI GPIB and VXI Interfaces Overview k VXI Interface E18491B IEEE 1394 to VXI Module Interface VISA Name Windows PC IEEE 1394 to VXI VXI Mainframe V V V X X X E l VISA Name 9 n n n 1 s s s VXI0 E8491 PC Card B t t t r r r LA8 LA 24 LA 16 VISA Addressing viOpen VX10 24 INSTR Open IO path to VXI instrument at logical address 24 using R E8491 PC Card and E8491 IEEE 1394 to VXI Module p Chapter 5 99 Programming via GPIB and VXI GPIB and VXI Interfaces Overview GPIB VXI Interfaces Overview As shown in the following figure a typical GPIB VXI interface consists of a GPIB card 82350 or equivalent in a Windows PC that is connected via a GPIB cable to an E1406A Command Module The E1406A sends commands to the VXI instruments in a VXI mainframe There is no direct access to the VXI backplane from the PC NOTE For a GPIB VXI interface VISA uses a DLL supplied by the Command Module vendor to translate the VISA VXI calls to Command Module commands that are vendor specific The DLL required for Agilent Hewlett Packard Command Modules is installed by the Agilent IO Libraries Installer This DLL is installed by default when Agilent VISA is installed g N
388. t You must use the LAN Client to talk to instrument3 since instrument3 is not a remote gpib interface NOTE When using the VXI 11 protocol with VISA LAN Client the Remote SICL Interface Name must be of the form gpibN where N is 0 or a positive integer This restriction does not apply to the SICL LAN protocol 138 Chapter 6 Programming via LAN LAN Interfaces Overview g VISA LAN Client LAN N Interface VISA Names Windows PC LAN LAN Instruments VISA Name instrument machine name enn VISA LAN Client baa 5 VXI 11 2 aer P GPIB Emulation i instrument1 f gpibO l gpib0 5 VISA LAN Client 1 2 3 4 IP address GPIB2 GPIB2 lan L 4 234 3 VXI 11 2 gpibo GPIB Emulation a ioe gpib0 3 TCPIPO LAN Card instrument3 VXI 11 3 LAN instrument instO VISA LAN Client Parameters GPIB1 GPIB2 VISA Interface Name GPIB1 GPIB2 LAN Client SICL Interface Name lan lan Remote Host Name instrument1 4 2 3 4 Remote SICL Interface Name gpibO gpibO VISA Addressing Using LAN Client viOpen TCPIPO instrument1 gpib0 5 INSTR Open IO path to LAN instrument at address 5 viOpen TCPIP0 1 2 3 4 gpib0 3 INSTR Open IO path to LAN instrument at address 3 viOpen TCPIPO instrument3 inst0 INSTR Open IO path to LAN instrument3 VISA Addressing Using VISA LAN Client VISA viOpen GPIB1
389. t match retcnt A pointer to the number of matches found instrDesc A pointer to a string identifying the location of the match Note that you must allocate storage for this string The handle returned from viFindRsrc should be closed to free up all the system resources associated with the search To close the find object pass the findList to the viClose function Chapter 4 47 Programming with VISA Using Sessions Use the expr parameter of the viFindRsrc function to specify the interface to search You can search for devices on the specified interface Use the following table to determine what to use for your expr parameter NOTE Because VISA interprets strings as regular expressions the string GPIB INSTR applies to both GPIB and GPIB VXI devices Interface expr Parameter GPIB GPIB 0 9 INSTR VXI VXI INSTR GPIB VXI GPIB VXI INSTR GPIB and GPIB VXI GPIB INSTR All VXI VXI 0 9 2 INSTR ASRL ASRL 0 9 INSTR All INSTR Example Searching This example searches the VXI interface for resources The number of VXI Interface for Resources matches found is returned in nmatches and matches points to the string that contains the matches found The first call returns the first match found the second call returns the second match found etc VI_FIND_BUFLEN is defined in the visa h declarations file ViChar buffer VI FIND BUFLEN ViRsre matches buffer Vi
390. t be performed because the resource identified by vi has been locked for this kind of access viMoveOut8 viMoveOut16 viMoveOut32 viln8 viln16 viln32 Chapter 7 233 Syntax Description VISA Language Reference viMoveOut8 viMoveOut16 and viMoveOut32 viMoveOut8 viMoveOut16 and viMoveOut32 viMoveOut8 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt8 buf8 viMoveOut16 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt16 buf16 viMoveOut32 ViSession vi ViUInt16 space ViBusAddress offset ViBusSize length ViAUInt32 buf32 This function moves an 8 bit 16 bit or 32 bit block of data from local memory to the specified memory space assigned memory base offset This function writes the 8 bit 16 bit or 32 bit value to the address space pointed to by space The offset must be a valid memory address in the space This function does not require viMapAddress to be called prior to its invocation If the viSession parameter vi refers to an INSTR session the offset parameters specify relative offsets from the start of the instrument s address space If the viSession parameter vi refers to a MEMACC session the offset parameters are absolute offsets from the start of memory in the specified VXI address space The valid entries for specifying address space are Value Description VI_A16_SPACE Address the A16 address space of VXI MXI bus
391. t code refers to all conversion codes of type float e E g G unless specified as f only Every conversion command starts with the character and ends with a conversion character format code Between the character and the format code the modifiers in the following tables can appear in the sequence Chapter 7 251 VISA Language Reference viPrintf ANSI C Standard Modifiers Modifier Supported with Description Format Code An integer d f s This specifies the minimum field width of the converted argument specifying format codes If an argument is shorter than the field width it will be padded on the field width left or on the right if the flag is present An asterisk may be present in lieu of a field width modifier in which case an extra arg is used This arg must be an integer representing the field width Special case For the H Q and B flags the field width includes the H and B strings respectively An integer d s format The precision string consists of a string of decimal digits A specifying codes decimal point must prefix the precision string An asterisk precision may be present in lieu of a precision modifier in which case an extra arg is used This arg must be an integer representing the precision of a numeric field The precision string specifies the following E The minimum number of digits to appear for the e1 H Q and B flags and thei o u x and X fo
392. t used the session uses the default values provided by this specification Multiple access modes can be used simultaneously by specifying a bit wise OR of the values Must use VI_NULL in VISA 1 0 rsrcName viRsrc Unique symbolic name of a resource See the following tables sesn ViSession Resource Manager session should always be the Default Resource Manager for VISA returned from viOpenDefaultRM Chapter 7 237 VISA Language Reference viOpen Name Direction Type Description timeout IN ViUInt32 If the accessMode parameter requires a lock this parameter specifies the absolute time period in milliseconds that the resource waits to get unlocked before this operation returns an error Otherwise this parameter is ignored Must use VI_NULL in VISA 1 0 vi OUT viSession Unique logical identifier reference to a session Address String Grammar for rsrcName Parameter Interface Syntax VXI VXI board VXI logical address INSTR VXI VXI board MEMACC VXI VXI board VXI logical address BACKPLANE GPIB VXI GPIB VXI board VXI logical address INSTR GPIB VXI GPIB VXI board MEMACC GPIB VXI GPIB VXI board VXI logical address BACKPLANE GPIB GPIB board primary address secondary address INSTR GPIB GPIB board INTFC ASRL ASRL board INSTR
393. t was received Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the RO ViEventType VI_EVENT_ TRIG event VI_ATTR_RECV_TRIG_ The identifier of the triggering RO viInt16 VI_TRIG_ SW VI_LEVENT_IO_COMPLETION Notification that an asynchronous operation has completed Event Attribute Description AP Data Type Range VI_ATTR_EVENT_TYPE Unique logical identifier of the event RO ViEventType VI_EVENT_IO_ COMPLETION Appendix B 407 VISA Resource Classes GPIB Bus Interface INTFC Resource Event Attribute Description AP Data Type Range VI_ATTR_STATUS Return code of the asynch RO viStatus N A ronous I O operation that has completed VI_ATTR_JOB_ID Job ID of the asynchronous RO VidobId N A operation that has completed VI_ATTR_BUFFER Address of buffer used in an RO viBuf N A asynchronous operation VI_ATTR_RET_ COUNT Actual number of elements RO viUInt32 that were asynchronously transferred 0 to FFFFFFFFp VI_ATTR_OPER_NAME The name of the operation RO viString generating the event N A INTFC Resource Operations viAssertTrigger vi protocol viBufRead vi buf count retCount viBufWrite vi buf count retCount viFlush vi mask viGpibCommand vi buf count retCount viGpibControlATN vi mode viGpibControl1REN vi mode viGpibPassContr
394. tVi ViStatus err Chapter 4 79 Programming with VISA Using Events and Handlers VilInt16 trigId open session to VXI device viOpenDefaultRM amp defaultRM viOpen defaultRM VXI0 24 INSTR VI NULL VI NULL amp vi select trigger line TTLO viSetAttribute vi VI_ATTR TRIG ID VI TRIG TTLO enable th vent viEnableEvent vi VI EVENT_TRIG VI QUEUE VI NULL fire trigger line twice viAssertTrigger vi VI TRIG PROT SYNC viAssertTrigger vi VI TRIG PROT SYNC Wait for the event to occur err viWaitOnEvent vi VI_EVENT TRIG 10000 amp eventType amp eventvi if err VI_ERROR_TMO printf Timeout Occurred Event not received n return print the event information printf Trigger Event Occurred n printf Original Device Session ld n vi get trigger that fired viGetAttribute eventVi VI ATTR RECV TRIG ID amp trigId printf Trigger that fired switch trigId case VI_TRIG TTLO printf TTLO break default printf lt other O0x x gt trigId break printf n close the context before continuing viClose eventVi 80 Chapter 4 Programming with VISA Using Events and Handlers get second event err viWaitOnEvent vi VI_EVENT TRIG 10000 amp eventType eventvi if err VI_ERROR_TMO p
395. te characters blank vertical tabs horizontal tabs form feeds new line linefeed and carriage return are ignored except in the case of c and All other ordinary characters except should match the next character read from the device A format specifier sequence consists of a followed by optional modifier flags followed by one of the format codes in that sequence It is of the form modifier format code where the optional modifier describes the data format while format code indicates the nature of data data type One and only one format code should be performed at the specifier sequence A format specification directs the conversion to the next input arg The results of the conversion are placed in the variable that the corresponding argument points to unless the asterisk assignment suppressing character is given In such a case no arg is used and the results are ignored The viScanf function accepts input until an END indicator is read or all the format specifiers in the readFmt string are satisfied It also terminates if the format string character does not match the incoming character Thus detecting an END indicator before the readFmt string is fully consumed will result in ignoring the rest of the format string Also if some data remains in the buffer after all format specifiers in the readFmt string are satisfied the data will be kept in the buffer and will be used by the next viScanf function Chapter
396. ter ViPByte ViByte The location of a ViByte ViBoolean ViUInt16 A type that is either VI_TRUE or VI_FALSE ViPBoolean ViBoolean The location of a ViBoolean Appendix A 325 VISA Library Information VISA Type Definitions VISA Data Type Type Definition Description ViBuf ViPByte The location of a block of data ViPBuf ViPByte The location of a block of data ViString ViPChar The location of a NULL terminated ASCII string ViPString ViPChar The location of a NULL terminated ASCII string ViStatus ViInt32 Values that correspond to VISA defined completion and error codes ViPStatus ViStatus The location of the completion and error codes viRsre viString AViString type ViPRsrce viString A ViString type ViAccessMode ViUInt32 Specifies the different mechanisms that control access to a resource ViBusAddress ViUInt32 Represents the system dependent physical address ViBusSize ViUInt32 Represents the system dependent physical address size ViAttr ViUInt32 Identifies an attribute ViVersion ViUInt32 Specifies the current version of the resource ViPVersion ViVersion The location of ViVersion ViAttrState viUInt32 Specifies the type of attribute ViPAttrState void The location of viAttrState ViVAList va_list The location of a list of variable number of parameters of differing types ViEventType viUInt32 Specifies the type of event ViPEvent
397. the Windows and HP UX programming environments and provides an alphabetical list of interfaces and Resource Classes associated with each functions VISA functions are listed in alphabetical order 148 Chapter 7 VISA Language Reference VISA Functions Overview VISA Functions Overview This section lists VISA functions by applicable interfaces and resource classes and lists VISA functions by type of operations performed VISA Functions by Interface Resource This table lists VISA functions supported interfaces GPIB VXI etc and associated resource classes INSTR INTFC etc that are implemented in Agilent VISA Interface GPIB GPIB VXI TCPIP ASRL VXI Resource Class Find Rsrc INSTR INTFC INSTR INSTR MEM BACK INSTR SOC INSTR List Mgr ACC PLANE KET viAssertIntrSignal viAssertTrigger e e e e e viAssertUtilSignal viBufRead e e e e e viBufWrite e e e e viClear e e e e viClose e e e e e e viDisableEvent e e e viDiscardEvents e e e viEnableEvent e e e e e viEventHandler e e e viFindNext e e e viFindRsrc e e e e e e viFlush e e e e viGetAttribute e e e e Chapter 7 149 VISA Language Reference VISA Functions Overview
398. tify a valid session Unable to start read operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO An unknown I O error occurred during transfer VI_ERROR_NCIC vi does not refer to an interface that is currently the controller in charge VI_ERROR_NLISTENERS VI_ERROR_NSUP_OPER VI_ERROR_RAW_RD_ PROT VIOL No listeners condition is detected both NRFD and NDAC are deasserted The given vi does not support this function Violation of raw read protocol occurred during transfer VI_ERROR_RAW_WR_PROT VIOL Violation of raw write protocol occurred during transfer VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed viWriteAsync vi buf count jobld Codes Description VI_SUCCESS Asynchronous write operation successfully queued VI_SUCCESS SYNC Write operation performed synchronously VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_QUEUE_ERROR Unable to queue write operation 366 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource id
399. tion could not be performed because the resource identified by vi has been locked for this kind of access viMoveAsync vi srcSpace srcOffset srcWidth destSpace destOffset destWidth Length jobld Codes Description VI_SUCCESS VI_SUCCESS_SYNC VI ERROR_QUEUE Operation completed successfully Operation performed synchronously Unable to queue move operation VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_NSUP_ORDER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access viMoveIn8 vi space offset length buf8 viMoveIn16 vi space offset ength buf16 viMovelIn32 vi space offset length buf32 Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_BERR Bus error occurred during transfer VI_ERROR_INV_LENGTH Invalid length specified VI_ERROR_INV_OBJECT The given object reference is invalid VI_ERROR_INV_OFFSET Invalid offset specified VI_ERROR_INV_SESSION The given session is invalid VI_ERROR_INV_SETUP Unable to start operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_INV_SPACE Invalid address space specifie
400. tion creates an executable file called idn E The 1 option links in the VISA library Logging Error Messages To view any VISA internal errors that may occur on HP UX edit the etc opt vxipnp hpux hpvisa hpvisa ini file Change the ErrorLog line in this file to the following ErrorLog true The error messages if any will be then be printed to stderr Chapter 3 35 Building a VISA Application in HP UX Using Online Help Using Online Help Online help for VISA on HP UX is provided with Bristol Technology s HyperHelp Viewer or in the form of HP UX manual pages man pages as explained in the following subsections Using the HyperHelp Viewer The Bristol Technology HyperHelp Viewer allows you to view the VISA functions online To start the HyperHelp Viewer with the VISA help file type hyperhelp opt hyperhelp visahelp hlp When you start the Viewer you can also specify any of the following options k keyword Opens the Viewer and searches for the specified keyword p partial_keyword Opens the Viewer and searches for a specific partial keyword s viewmode Opens the Viewer in the specified viewmode If 1 is specified as the viewmode the Viewer is shared by all applications If 0 is specified a separate Viewer is opened for each application default display display Opens the Viewer on the specified display Using HP UX Manual Pages To use manual pages type the HP UX man command f
401. to attributes being set to an inconsistent state or some implementation specific configuration file is corrupt or does not exist VI_ERROR_INV_SIZE The specified size is invalid VI_ERROR_INV_SPACE The address space specified is invalid VI_ERROR_INV_WIDTH Invalid source or destination width specified VI_ERROR_IO Could not perform read write function because of an I O error or an unknown I O error occurred during transfer VI_ERROR_LIBRARY_NFOUND A code library required by VISA could not be located or loaded VI_ERROR_LINE_IN_USE The specified trigger line is in use VI_ERROR_MEM_NSHARED The device does not export any memory VI_ERROR_NCIC The session is referring to something other than the controller in charge VI_ERROR_NENABLED The session must be enabled for events of the specified type to receive them VI_ERROR_NIMPL_OPER The given operation is not implemented VI_ERROR_NLISTENERS No listeners are detected Both NRFD and NDAC are deasserted VI_ERROR_NSUP_ALIGN_OFFSET VI_ERROR_NSUP_ATTR The specified offset is not properly aligned for the access width of the operation The attribute specified is not supported by the specified resource VI_ERROR_NSUP_ATTR_STATE The state specified for the attribute is not supported VI_ERROR_NSUP_FMT The format specifier is not supported for the current argument type VI_ERROR_NSUP_INTR T
402. to the given device retcnt OUT ViUInt32 Number of matches sesn IN ViSession Resource Manager session should always be the Default Resource Manager for VISA returned from viOpenDefaultRM Description String for expr Parameter Interface Expression GPIB GPIB 0 9 INSTR VXI VXI INSTR GPIB VXI GPIB VX1 INSTR GPIB and GPIB VXI GPIB INSTR All VXI VXI 0 9 INSTR ASRL ASRL 0 9 INSTR All INSTR Special Value for findList Parameter Value Action Description VI_NULL Do not return a find list handle 192 Chapter 7 Return Values See Also VISA Language Reference viFindRsrc Special Value for retcnt Parameter Value Action Description VI_NULL Do not return the number of matches Type ViStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Resource s found Error Codes VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT Description The given session or object reference is invalid both are the same value VI_ERROR_NSUP_OPER The given sesn does not support this function VI_ERROR_INV_EXPR Invalid expression specified for search VI_ERROR_RSRC_NFOUND Specified expression does not match any devices viFindNext viClose Chapter 7 193 Syntax Description VISA Language Reference viFlush viFlush viFlush ViSessio
403. tribute retrieved successfully VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_INV_SETUP Unable to start write operation because setup is invalid due to attributes being set to an inconsistent state VI_ERROR_IO VI_ERROR_NCIC An unknown I O error occurred during transfer The interface associated with this session is not currently the controller in charge VI_ERROR_NLISTENERS No listeners condition is detected both NRFD and NDAC are deasserted VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before operation completed viGpibControlATN vi mode Codes Description VI_SUCCESS Operation completed successfully VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value 342 Appendix A VISA Library Information VISA Error Codes Codes Description VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NSUP_MODE The specified mode is not supported by this VISA
404. ts ccceceeceeeeeeeeeeeeeeees 400 MEMACC Resource Operations cccceeeteeeteeeeeeee 401 GPIB Bus Interface INTFC ReSourCe 402 INTFC Resource Overview ccccccececeeeeeeeeeeeeesneeaeees 402 INTRO Resource Attributes scscci ices scdacivetnensedessionsnnadueteantcaaes 402 INTFC Resource Attribute Descriptions 0 0 ee 404 INTRO R s rce EVEAIS sciccisssdeciasscanieccestsuniatensaanncecems auras 406 INTFC Resource Operations cccccceeeeeeeeeeeteeeeeteeeees 408 VXI Mainframe Backplane BACKPLANE Resource 409 BACKPLANE Resource Overview cccceeeeeeteeeeeeeeee 409 BACKPLANE Resource Attributes 0 ccceeeeeeteeeee 410 BACKPLANE Resource Attribute Descriptions 411 BACKPLANE Resource Event 2 cceeceeeeeeeeeeeeeees 412 BACKPLANE Resource Operations cccceeeeeeeeees 412 Contents 7 Servant Device Side SERVANT Resource n se 413 SERVANT Resource Overview ccccccccceceeeaeeeseeeseeeneeeeeees 413 SERVANT Resource Attributes cc cceeesesesseeeeeeeeeees 414 SERVANT Resource Attribute Descriptions 0 415 SERVANT Resource Events eeinetan 417 SERVANT Resource Operations cceceeseeeeerteeeeeeeees 419 TCPIP Socket SOCKET ROSOUICE icccciscccdecerteessccceetteescacertees 420 SOCKET ReSourCe Overview ccccccccceceseeeeeaeseseaeee
405. turn status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Operation completed successfully Error Codes Description VI_ERROR_INV_MODE The value specified by the mode parameter is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_NCIC The interface associated with this session is not currently the controller in charge VI_ERROR_NSUP_MODE The specified mode is not supported by this VISA implementation VI_ERROR_NSUP_OPER The given vi does not support this operation VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access See Also INTFC Resource Description Chapter 7 201 Syntax Description Parameters VISA Language Reference viGpibControlREN viGpibControlREN viGpibControlREN ViSession Vi ViUInt16 mode Controls the state of the GPIB REN interface line and optionally the remote local state of the device This operation asserts or deasserts the GPIB REN interface line according to the specified mode The mode can also specify whether the device associated with this session should be placed in local state before deasserting REN or remote state after asserting REN This operation is valid only if the GPIB int
406. uffers using the viFlush function Flushing the read buffer also includes reading all pending response data from a device If the device is still sending data the flush process will continue to read data from the device until it receives an END indicator from the device This C program example shows sending and receiving formatted I O The example opens a session with a GPIB device and sends a comma operator to send a comma separated list This example program is intended to show specific VISA functionality and does not include error trapping Error trapping however is good programming practice and is recommended in your VISA applications See Trapping Errors in this chapter This example program is installed on your system in the SAMPLES subdirectory on Windows environments or in the examples subdirectory on HP UX See Appendix A VISA Library Information for locations of example programs on your operating system formatio c This example program makes a multimeter measurement with a comma separated list passed with formatted I O and prints the results You may need to change the device address finclude lt visa h gt include lt stdio h gt void main ViSession defaultRM vi double res double list 2 1 0 001 Open session to GPIB device at address 22 viOpenDefaultRM amp efaultRM viOpen defaultRM GPIBO 22 INSTR VI _NULL VI_ NULL amp vi Initialize device viPrintf vi R
407. using the VISA TCPIP Interface Type To use GPIB over the LAN you must first configure the TCPIP LAN Client interface and then the VISA LAN Client during Agilent IO Libraries configuration The TCPIP VISA interface type can be used directly to communicate with GPIB devices over LAN without having to configure a VISA LAN Client See the Agilent IO Libraries Installation and Configuration Guide for Windows for LAN installation information and to start or stop the LAN servers 128 Chapter 6 Client Server Model Gateway Operation Programming via LAN LAN Interfaces Overview LAN Interfaces Overview This section provides an overview of LAN Local Area Network interfaces A LAN is a way to extend the control of instrumentation beyond the limits of typical instrument interfaces To communicate over the LAN you must first configure the LAN Client interface There are three main types of LAN interfaces E LAN Client E VISA LAN Client E LAN Server LAN Hardware Architecture The LAN software provided with the Agilent IO Libraries allows instrumentation control over a LAN Using standard LAN connections instruments can be controlled from computers that do not have special interfaces for instrument control The LAN software uses the client server model of computing Client server computing refers to a model where an application the client does not perform all necessary tasks of the application itself Instead the client m
408. vailable to other processes that we know about This can be done with shared memory or other inter process communication methods These other processes can then call viLock vi VI_ SHARED LOCK 2000 lockkey lockkey and they will also have access to this resource Initialize device viPrintf vi RST n 90 Chapter 4 Programming with VISA Using Locks Make sure no other process or thread does anything to this resource between the viPrintf and the viScanf calls Note this also locks out the processes with which we shared our shared lock key viLock vi VI EXCLUSIVE LOCK 2000 VI_NULL VI NULL Send an IDN string to the device viPrintf vi IDN n Read results viScanf vi St amp buf unlock this session so other processes and threads can use it viUnlock vi Print results printf Instrument identification string s n buf release the shared lock also viUnlock vi Close session viClose vi viClose defaultRM Chapter 4 91 Programming with VISA Using Locks Notes 92 Chapter 4 Programming via GPIB and VXI 93 Programming via GPIB and VXI VISA supports three interfaces you can use to access GPIB and VXI instruments GPIB VXI and GPIB VXI This chapter provides information to program GPIB and VXI devices via the GPIB VXI or GPIB VXI interfaces including GPIB and VXI Interfaces O
409. ve lock on a resource or some global attributes may not be read when there is any kind of lock on the resource These exceptions when applicable are mentioned in the descriptions of the individual VISA functions and attributes See Chapter 7 VISA Language Reference for descriptions of individual functions to determine which are applicable for locking and which are not restricted by locking 88 Chapter 4 Programming with VISA Using Locks Example Exclusive This example shows a session gaining an exclusive lock to perform the Lock viPrintf and viScanf VISA operations on a GPIB device It then releases the lock via the viUnlock function lockexcl c This example program queries a GPIB device for an identification string and prints the results Note that you may need to change the address include lt visa h gt include lt stdio h gt void main ViSession defaultRM vi char buf 256 0 Open session to GPIB device at address 22 viOpenDefaultRM amp defaultRM viOpen defaultRM GPIBO 22 INSTR VI_NULL VI NULL EVI Initialize device viPrintf vi RST n Make sure no other process or thread does anything to this resource between viPrintf and viScanf calls viLock vi VI EXCLUSIVE LOCK 2000 VI NULL VI_NULL Send an IDN string to the device viPrintf vi IDN n Read results viScanf vi St amp buf Unlock this session
410. verview Using High Level Memory Functions Using Low Level Memory Functions Using High Low Level Memory I O Methods Using the Memory Access Resource Using VXI Specific Attributes See Chapter 4 Programming with VISA for general information on VISA programming for the GPIB VXI and GPIB VXI interfaces See Chapter 7 VISA Language Reference for information on the specific VISA functions 94 Chapter 5 What is an IO Interface VXI Device Types Programming via GPIB and VXI GPIB and VXI Interfaces Overview GPIB and VXI Interfaces Overview This section provides an overview of the GPIB GPIB VXI and VXI interfaces including General Interface Information GPIB Interfaces Overview VXI Interfaces Overview GPIB VXI Interfaces Overview General Interface Information VISA supports three interfaces you can use to access instruments or devices GPIB VXI and GPIB VXI The GPIB interface can be used to access VXI instruments via a Command Module In addition the VXI backplane can be directly accessed with the VXI or GPIB VXI interfaces An IO interface can be defined as both a hardware interface and as a software interface The O Config utility is used to associate a unique interface name with a hardware interface The IO Libraries use an Interface Name or Logical Unit Number to identify an interface This information is passed in the parameter string of the viOpen function call ina VISA program IO Config assigns an Interfac
411. vi ViEventType eventType ViEvent context ViAddr userHandle The _VI_FUNCH declaration is required to make sure the handler is of the proper type If _VI_FUNCH is not included stack corruption may occur on the function call or return The _VI_FUNCH declaration is very important since it declares the function of t type stdcall which VISA requires Visual Studio C defaults to cdecl which will not work When the handler returns it will generate an access violation because the stack gets corrupted Because each eventType defines its own context in terms of attributes refer to the appropriate event definition to determine which attributes can be retrieved using the context parameter Because the event context must still be valid after the user handler returns so that VISA can free it up an application should not invoke the viClose operation on an event context passed to a user handler If the user handler will not return to VISA the application should call viClose on the event context to manually delete the event object This may occur when a handler throws a C exception in response to a VISA exception event Normally an application should return VI_SUCCESS from all callback handlers If a specific handler does not want other handlers to be invoked for the given event for the given session it should return VI_SUCCESS_NCHAIN No return value from a handler on one session will affect callbacks on other sessions Chapter 7 183 V
412. vi ViUInt16 space ViBusAddress offset ViUInt32 val32 This operation by using the specified address space reads in 8 16 or 32 bits of data from the specified offset This operation does not require viMapAddress to be called prior to its invocation This function reads in an 8 bit 16 bit or 32 bit value from the specified memory space assigned memory base offset This function takes the 8 bit 16 bit or 32 bit value from the address space pointed to by space The offset must be a valid memory address in the space This function does not require viMapAddress to be called prior to its invocation If the viSession parameter vi refers to an INSTR session the offset parameter specifies a relative offset from the start of the instrument s address space If the viSession parameter vi refers to a MEMACC session the offset parameter is an absolute offset from the start of memory in that VXI address space The valid entries for specifying address space are Value Description VI_A16_SPACE Address the A16 address space of VXI MXI bus VI_A24 SPACE Address the A24 address space of VXI MXI bus VI_A32_SPACE Address the A32 address space of VXI MXI bus The high level operations viIn8 viIn16 and viIn32 operate successfully independently from the low level operations viMapAddress viPeek8 viPeek16 viPeek32 viPoke8 viPokel16 and viPoke32 The high level and low level operations should operate independent
413. vices by clicking the Add Device button and entering the device address NOTE To turn off the default of identifying devices at runtime unselect the Identify devices at run time box at the top of the dialog box 5 At this time you may also click the Auto Add Devices button at the bottom of the screen to automatically check for devices If you select this button the utility will prompt you to make sure all devices are connected and turned on Once this process is complete you may edit this list with the Add Device and Remove Device buttons 6 Once you have completed adding or removing devices select the OK button to exit the window Then exit the IO Config utility to save the changes you have made When you first configured the Agilent IO Libraries the default configuration specified that all VISA devices would be identified at runtime However this is not ideal for all users If you are experiencing performance problems particularly during viOpenDefaultRM you may want to change the VISA configuration to identify devices during configuration To edit the default VISA configuration on HP UX use the following command to run the visacfg utility opt vxipnp hpux hpvisa visacfg Follow the instructions provided in the utility When prompted select the Add Device button and add all devices that will be used Appendix A 371 VISA Library Information VISA Directories Information 372 Appendix A VISA Resource Classes
414. vides the parameters rather than separate arg parameters Parameters Name __ Direction Type Description params IN ViVAList A list containing the variable number of parameters on which the format string is applied The formatted data is written to the specified device vi IN ViSession Unique logical identifier to a session writeFmt IN viString The format string to apply to parameters in ViVAList See viPrint for description Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Parameters were successfully formatted 298 Chapter 7 See Also VISA Language Reference viVPrintf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the writeFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO Could not perform write function because of I O error VI_ERROR_NSUP_FMT A format specifier in the writeFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout
415. vilege to invoke any operation and update any global attributes Sessions are not required to have locks to invoke operations or update global attributes However if some other session has already locked the resource attempts to update global attributes or invoke certain operations will fail See descriptions of the individual VISA functions in Chapter 7 VISA Language Reference to determine which would fail when a resource is locked The VISA viLock function is used to acquire a lock on a resource vilock vi lockType timeout requestedKey accessKey The VI_ATTR_RSRC_LOCK_STATE attribute specifies the current locking state of the resource on the given session which can be either VI_NO_LOCK VI_EXCLUSIVE_ LOCK or VI_SHARED_ LOCK The VISA viUnlock function is then used to release the lock on a resource If a resource is locked and the current session does not have the lock the error VI_ERROR_RSRC_LOCKED is returned Chapter 4 87 Programming with VISA Using Locks VISA Lock Types VISA defines two different types of locks Exclusive Lock and Shared Lock E Exclusive Lock A session can lock a VISA resource using the lock type VI_EXCLUSIVE_LOCK to get exclusive access privileges to the resource This exclusive lock type excludes access to the resource from all other sessions If a session has an exclusive lock other sessions cannot modify global attributes or invoke operations on the resource However the other sessions can
416. which the data is read and the format string is applied readFmt IN viString The format string to apply to parameters in ViVAList See viScanf for description vi IN ViSession Unique logical identifier to a session Return Values Type viStatus This is the function return status It returns either a completion code or an error code as follows Completion Code Description VI_SUCCESS Data was successfully read and formatted into arg parameter s 302 Chapter 7 See Also VISA Language Reference viVScanf Error Codes Description VI_ERROR_ALLOC The system could not allocate a formatted I O buffer because of insufficient resources VI_ERROR_INV_FMT A format specifier in the readFmt string is invalid VI_ERROR_INV_SESSION VI_ERROR_INV_OBJECT The given session or object reference is invalid both are the same value VI_ERROR_IO Could not perform read function because of I O error VI_ERROR_NSUP_FMT A format specifier in the readFmt string is not supported VI_ERROR_RSRC_LOCKED Specified operation could not be performed because the resource identified by vi has been locked for this kind of access VI_ERROR_TMO Timeout expired before read function completed viScanf Chapter 7 303 Syntax Description Parameters Return Values VISA Language Reference viVSPrintf viVSPrintf viVSPrintf ViSession Vi ViBuf
417. xplicit idn bas This example program queries a GPIB device for an identification string and prints the results Note that you may have to change the VISA Interface Name and address for your device from GPIBO and 22 respectively Sub Main Dim defrm As Long Dim vi As Long Dim strRes As String 200 Fixed length string to hold results 26 Session to Default Resource Manager Session to instrument Chapter 2 Building a VISA Application in Windows Building a VISA Program Visual Basic Open the default resource manager session Call viOpenDefaultRM defrm Open the session to the resource The GPIBO parameter is the VISA Interface name to a GPIB instrument as defined in Start Programs Agilent IO Libraries IO Config Change this name to what you have defined your VISA Interface GPIBO 22 INSTR is the address string for the device this address will be the same as seen in Start Programs Agilent IO Libraries VISA Assistant after the VISA Interface Name is defined in IO Config Call viOpen defrm GPIBO 22 INSTR 0 0 vi Initialize device Call viVPrintf vi RST Chr 10 0 Ask for the device s IDN string Call viVPrintf vi IDN Chr 10 0 Read the results as a string Call viVScanf vi St strRes Display the results MsgBox Result is strRes vbOKOnly IDN Result Close the vi session and the resource ma
Download Pdf Manuals
Related Search
Related Contents
EXC-1553PCMCIA User`s Manual, Rev C Copyright © All rights reserved.
Failed to retrieve file