'' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" '' Copyright (c) 1999- 2003 Agilent Technologies Inc. All rights reserved. '' '' You have a royalty-free right to use, modify, reproduce and distribute '' the Sample Application Files (and/or any modified version) in any way '' you find useful, provided that you agree that Agilent Technologies has '' no warranty, obligations or liability for any Sample Application Files. '' '' Agilent Technologies provides programming examples for illustration only, '' This sample program assumes that you are familiar with the programming '' language being demonstrated and the tools used to create and debug '' procedures. Agilent Technologies support engineers can help explain the '' functionality of Agilent Technologies software components and associated '' commands, but they will not modify these samples to provide added '' functionality or construct procedures to meet your specific needs. '' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" '' To develop VISA applications in Microsoft Visual Basic, you first need '' to add the Visual Basic (VB) declaration file in your VB project as a '' Module. This file contains the VISA function definitions and constant '' declarations needed to make VISA calls from Visual Basic. '' To add this module to your project in VB 6, from the menu, select '' Project->Add Module, select the 'Existing' tab, and browse to the '' directory containing the VB Declaration file, select visa32.bas, and '' press 'Open'. '' '' The name and location of the VB declaration file depends on which '' operating system you are using. Assuming the 'standard' VISA directory '' of C:\Program Files\VISA or the 'standard' VXIpnp directory of '' C:\VXIpnp, the visa32.bas file can be located in one of the following: '' '' \winnt\agvisa\include\visa32.bas - Windows NT/2000/XP '' \winnt\include\visa32.bas - Windows NT/2000/XP '' \win95\include\visa32.bas - Windows 95/98/Me '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' screen.bas ' The following example program is written for the PSA and ESA Series ' Spectrum Analyzers. It stores the current screen image on the ' instrument's flash as C:PICTURE.GIF. It then transfers the image over ' GPIB or LAN and stores the image on your PC in the current directory ' as picture.gif. The file C:PICTURE.GIF is then deleted on the ' instrument's flash. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Option Explicit Private Sub Main() ' Declare Variables used in the program Dim status As Long 'VISA function status return code Dim defrm As Long 'Session to Default Resource Manager Dim vi As Long 'Session to instrument Dim x As Integer 'Loop Variable Dim ArrayPtr(1) As Long 'Array of Pointers Dim ResultsArray(50000) As Byte 'results array, Big enough to hold a GIF Dim length As Long 'Number of bytes returned from instrument Dim fnum As Integer 'File Number to used to open file to store data Dim isOpen As Boolean 'Boolean flag used to keep track of open file Dim headerlength As Long 'length of header 'Set the default number of bytes that will be contained in the 'ResultsArray to 50,000 (50kB) length = 50000 'Set the array of pointers to the addresses of the variables ArrayPtr(0) = VarPtr(length) ArrayPtr(1) = VarPtr(ResultsArray(0)) 'Delete picture.gif file if it exists On Error Resume Next Kill "picture.gif" On Error GoTo Error_Handler ' Open the default resource manager session status = viOpenDefaultRM(defrm) ' Open the session. Note: For PSA, to use LAN, change the string to ' "TCPIP0::xxx.xxx.xxx.xxx::inst0::INSTR" where xxxxx is the IP address status = viOpen(defrm, "GPIB0::18::INSTR", 0, 0, vi) If (status < 0) Then GoTo VisaErrorHandler ' Set the I/O timeout to fifteen seconds status = viSetAttribute(vi, VI_ATTR_TMO_VALUE, 15000) If (status < 0) Then GoTo VisaErrorHandler 'Store the current screen image on flash as C:PICTURE.GIF status = viVPrintf(vi, ":MMEM:STOR:SCR 'C:PICTURE.GIF'" + Chr$(10), 0) If (status < 0) Then GoTo VisaErrorHandler 'Grab the screen image file from the instrument status = viVQueryf(vi, ":MMEM:DATA? 'C:PICTURE.GIF'" + Chr$(10), _ "%#y", ArrayPtr(0)) 'Delete the tempory file on the flash named C:PICTURE.GIF status = viVPrintf(vi, ":MMEM:DEL 'C:PICTURE.GIF'" + Chr$(10), 0) If (status < 0) Then GoTo VisaErrorHandler 'Close the vi session and the resource manager session Call viClose(vi) Call viClose(defrm) 'Store the results in a text file fnum = FreeFile() 'Get the next free file number Open "picture.gif" For Binary As #fnum isOpen = True headerlength = 2 + (Chr$(ResultsArray(1))) For x = headerlength To length - 2 Put #fnum, , ResultsArray(x) Next x ' Intentionally flow into Error Handler to close file Error_Handler: ' Raise the error (if any), but first close the file If isOpen Then Close #fnum If Err Then Err.Raise Err.Number, , Err.Description Exit Sub VisaErrorHandler: Dim strVisaErr As String * 200 Call viStatusDesc(defrm, status, strVisaErr) MsgBox "*** Error : " & strVisaErr, vbExclamation, "VISA Error Message" Exit Sub End Sub