S820E Microwave Site Masterâ„¢ Programming Manual : Examples : Visual Basic
 
Visual Basic
This function can be called in a Visual Basic program. It performs an RF Calibration in Cable & Antenna Analyzer mode. Communication with the instrument uses USB protocol.
Public Sub OnePathTwoPortCalibrationInCAAMode()
 
Const MAX_CNT = 200
Dim stat As Variant
Dim dfltRM As Variant
Dim sesn As Variant
Dim retCount As Long
Dim Buffer As String * MAX_CNT
Dim Response As String * VI_FIND_BUFLEN
Dim sInputString As String
Rem Begin by initializing the system
stat = viOpenDefaultRM(dfltRM)
If (stat < VI_SUCCESS) Then
Rem Error initializing VISA...exiting
Exit Sub
End If
Rem Open communication with USB Protocol
Rem NOTE: For simplicity, we will not show error checking
Rem 0x0B5B::0xFF60::32850021_76227-3_102 = Vendor id::Product id::dut usb id
stat = viOpen(dfltRM, "USB0::0x0B5B::0xFF60::32850021_76227-3_102::INSTR", VI_NULL, VI_NULL, sesn)
Rem Set some visa attributes
stat = viSetAttribute(sesn, VI_ATTR_TMO_VALUE, 90000)
stat = viSetAttribute(sesn, VI_ATTR_SEND_END_EN, VI_TRUE)
stat = viSetAttribute(sesn, VI_ATTR_SUPPRESS_END_EN, VI_FALSE)
stat = viClear(sesn)
'Switch to Cable-Antenna Analyzer Mode
sInputString = ":INST:NSEL 2"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
sInputString = ":INST:NSEL?"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 2
'System preset
sInputString = ":SYSTEM:PRESET"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Wait for previous operation to be completed
sInputString = "*OPC?"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Buffer = ""
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
'Set start frequency
sInputString = ":SENSe:FREQuency:STARt 2 MHz"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Set stop frequency
sInputString = "SENSe:FREQuency:STOP 7 GHz"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Set IFBW in Hz
sInputString = "SWEep:IFBW 1000"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Set Source power
sInputString = "SOURce:POWer HIGH"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Initiate One-path Two-port Calibration
sInputString = "SENSe:CORRection:COLLect:TYPE 2PFP"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Wait for previous operation to be completed
sInputString = "*OPC?"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Buffer = ""
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
'measure open
MsgBox "Connect open at port 1"
sInputString = ":SENS:CORR:COLL:ACQU OPEN, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
'wait open measurement to complete and returns 1
sInputString = ":SENS:CORR:COLL:ACQU:STAT? OPEN, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 1
'measure short
MsgBox "Connect short at port 1"
sInputString = ":SENS:CORR:COLL:ACQU SHORT, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
'wait short measurement to complete and returns 1
sInputString = ":SENS:CORR:COLL:ACQU:STAT? SHORT, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 1
'measure load
MsgBox "Connect load at port 1"
sInputString = ":SENS:CORR:COLL:ACQU LOAD, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
'wait load measurement to complete and returns 1
sInputString = ":SENS:CORR:COLL:ACQU:STAT? LOAD, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 1
'measure forward isolation
sInputString = ":SENS:CORR:COLL:ACQU ISOL, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
'wait forward isolation measurement to complete and returns 1
sInputString = ":SENS:CORR:COLL:ACQU:STAT? ISOL, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 1
'measure thru
MsgBox "Connect thru between port 1 & 2."
sInputString = ":SENS:CORR:COLL:ACQU THRU, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Do
Sleep (200)
'wait thru measurement to complete and returns 1
sInputString = ":SENS:CORR:COLL:ACQU:STAT? THRU, 1"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Loop Until Val(Buffer) = 1
'Save and apply calibration
sInputString = ":SENS:CORR:COLL:SAV"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
'Wait for previous operation to be completed
sInputString = "*OPC?"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Buffer = ""
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
'read back the the cal type (i.e. Buffer = 5, One-path Two-port calibration)
sInputString = "SENS:CAL:STAT?"
stat = viWrite(sesn, sInputString, Len(sInputString), retCount)
Buffer = ""
stat = viRead(sesn, Buffer, MAX_CNT, retCount)
Rem Close down the system
stat = viClose(sesn)
stat = viClose(dfltRM)
End Sub