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