SendSCPI "ROUTE:SCAN " & scanList ’ Select the list of channels to scan
SendSCPI "ROUTE:SCAN:SIZE?" ’ Query the number of channels in scan list and
numberChannels = Val(GetSCPI()) ’ set variable equal to number of channels
SendSCPI "FORMAT:READING:CHAN ON" ’ Return channel number with each reading
SendSCPI "FORMAT:READING:TIME ON" ’ Return time stamp with each reading
’ Set the delay (in seconds) between relay closure and measurement
SendSCPI "ROUT:CHAN:DELAY " & Str$(channelDelay) & "," & scanList
’ Set up the scan trigger parameters after configuring the channels in the scan list
’ using the CONFigure command. The following commands configure the scan interval.
SendSCPI "TRIG:COUNT " & Str$(numberScans)
SendSCPI "TRIG:SOUR TIMER"
SendSCPI "TRIG:TIMER " & Str$(ScanInterval)
Cells(2, 1) = "Start Time" ’ Put headings on spreadsheet
Cells(4, 1) = "Channel" ’ Put headings on spreadsheet
’ Start the scan and retrieve the scan start time
SendSCPI "INIT;:SYSTEM:TIME:SCAN?"
replyString = GetSCPI() ’ Put time into string variable
’ Convert the time to Excel format and put into cells B2 and C2
Cells(2, 2) = ConvertTime(replyString)
Cells(2, 3) = Cells(2, 2)
Cells(2, 3).NumberFormat = "d-mmm-yy" ’ Format for date
Cells(2, 2).NumberFormat = "hh:mm:ss" ’ Format for time
Range("a1:ba1").ClearContents ’Clear out row 1
’ Step through the number of scan sweeps
For columnIndex = 1 To numberScans ’ Start of scan data
Do ’ Wait for instrument to put a reading in memory
SendSCPI "DATA:POINTS?" ’ Get the number of readings stored
points = Val(GetSCPI())
Loop Until points >= 1
’ Remove one reading at a time from memory
For Channel = 1 To numberChannels
SendSCPI "DATA:REMOVE? 1" ’ Request one reading from memory
Application.ScreenUpdating = False
’ Get readings from buffer and store in cell A1
Cells(1, 1) = GetSCPI()
’ Parse the string in cell A1 and put into row ’1’
Range("a1").TextToColumns Destination:=Range("a1"), comma:=True
’ Call routine to organize the data in row 1 into a table
makeDataTable Channel, columnIndex
Range("a1:ba1").ClearContents ’ Clear out row 1
Application.ScreenUpdating = True
Do ’ Wait for instrument to put another reading in memory
SendSCPI "DATA:POINTS?" ’ Get the number of readings stored
points = Val(GetSCPI())
Loop Until points >= 1 Or Channel >= numberChannels
Next Channel
Next columnIndex
ClosePort ’ Close communications on GPIB
End Sub