ECal

Other topics about Sample Programs

Overview

The sample program performs 1-port or 2-port calibration using ECal.

See Calibration for this programming.

Sample Program in Excel VBA

Sub ECal_Click()

    Dim defrm As Long           'Session to Default Resource Manager

    Dim vi As Long              'Session to instrument

    Dim Ch As String

    Dim CalKit As Integer

    Dim Port(4) As String

    Const TimeOutTime = 40000   'timeout time.

    

    Ch = Cells(5, 5)            'Select channel

    Port(1) = Cells(3, 6)       'Sets the select port 1.

    Port(2) = Cells(3, 7)       'Sets the select port 2.

    Port(3) = Cells(3, 8)       'Sets the select port 3.

    Port(4) = Cells(3, 9)       'Sets the select port 4.

        

    Call viOpenDefaultRM(defrm)     'Initializes the VISA system.

    Call viOpen(defrm, "GPIB0::17::INSTR", 0, 0, vi)      'Opens the session to the specified instrument.

    Call viSetAttribute(vi, VI_ATTR_TMO_VALUE, TimeOutTime)   'The state of an attribute for the specified session.

    

    Call viVPrintf(vi, "*RST" & vbLf, 0)   'Presets the setting state of the ENA.

    Call viVPrintf(vi, "*CLS" & vbLf, 0)   'Clears the all status register.

    

    Select Case Cells(3, 5)

        Case "1 Port"

            Call ECal(vi, Ch, 1, Port)   'Perform 1-port calibration.

        Case "2 Port"

            Call ECal(vi, Ch, 2, Port)   'Perform full 2-port calibration.

        Case "3 Port"

            Call ECal(vi, Ch, 3, Port)   'Perform full 3-port calibration.

        Case "4 Port"

            Call ECal(vi, Ch, 4, Port)   'Perform full 4-port calibration.

    End Select

    

    Call viClose(vi)    'Closes the resource manager session.

    Call viClose(defrm)    'Breaks the communication and terminates the VISA system.

    

    End  

End Sub

Sub ECal(vi As Long, Ch As String, NumPort As String, Port() As String)

    Dim Dummy As Variant

    Dim i As Integer, j As Integer

    

    Select Case NumPort

        Case 1

            MsgBox ("Connect Port " & Port(1) & ". then click [OK] button")  'Display the message box.

            Call viVPrintf(vi, ":SENS" & Ch & ":CORR:COLL:ECAL:SOLT" & NumPort & " " & Port(1) & vbLf, 0) 'Execute the 1-port calibration.

        Case 2

            MsgBox ("Connect Port " & Port(1) & " and Port " & Port(2) & ". then click [OK] button")   'Display the message box.

            Call viVPrintf(vi, ":SENS" & Ch & ":CORR:COLL:ECAL:SOLT" & NumPort & " " & Port(1) & "," & Port(2) & vbLf, 0) 'Execute the full 2-port calibration.

        Case 3

            MsgBox ("Connect Port " & Port(1) & "," & Port(2) & " and Port " & Port(3) & ". then click [OK] button")  'Display the message box.

            Call viVPrintf(vi, ":SENS" & Ch & ":CORR:COLL:ECAL:SOLT" & NumPort & " " & Port(1) & "," & Port(2) & "," & Port(3) & vbLf, 0)   'Execute the full 3-port calibration.

        Case 4

            MsgBox ("Connect Port 1, 2, 3 and 4. then click [OK] button")    'Display the message box.

            Call viVPrintf(vi, ":SENS" & Ch & ":CORR:COLL:ECAL:SOLT4 1,2,3,4" & vbLf, 0) 'Execute the full 4-port calibration.

    End Select

    

    Call ErrorCheck(vi)      'Checking the error.

    

End Sub

Sub ErrorCheck(vi As Long)

    Dim err As String * 50, ErrNo As Variant, Response

    

    Call viVQueryf(vi, ":SYST:ERR?" & vbLf, "%t", err)    'Reads error message.

    ErrNo = Split(err, ",")   'Gets the error code.

    

    If Val(ErrNo(0)) <> 0 Then

        Response = MsgBox(CStr(ErrNo(1)), vbOKOnly)    'Display the message box.

    End If

End Sub

Sample Program in HT Basic (ecal.htb)

10 DIM File$[20],Ch$[9],Inp_char$[9]

20 INTEGER Cal_kit,Cal_type,Port(1:4)

30 !

40 ASSIGN @Agte507x TO 717

50 File$="Ex_4_2.sta"

60 Ch$="1"

70 !

80 CLEAR SCREEN

90 ON ERROR GOTO Type_select

100 Type_select: !

110 PRINT "## Calibration Type Selection ##"

120 PRINT " 1: Full 1 Port"

130 PRINT " 2: Full 2 Port"

140 PRINT " 3: Full 3 Port"

150 PRINT " 4: Full 4 Port"

160 PRINT ""

170 PRINT "Input 1 to 4"

180 INPUT "Input number? (1 to 4)",Inp_char$

190 Cal_type=IVAL(Inp_char$,10)

200 IF Cal_type<1 OR Cal_type>4 THEN Type_select

210 OFF ERROR

220 !

230 Select_port(Cal_type,Port(*))

240 Ecal(@Agte507x,Ch$,Cal_type,Port(*))

250 !

260 OUTPUT @Agte507x;":MMEM:STOR:STYP CST"

270 OUTPUT @Agte507x;":MMEM:STOR """&File$&""""

280 END

290 !=============================================

300 ! Port Selection Function

310 !=============================================

320 SUB Select_port(INTEGER Num_of_ports,INTEGER Port(*))

330 DIM Inp_char$[9]

340 !

350 CLEAR SCREEN

360 IF Num_of_ports=4 THEN

370 Port(1)=1

380 Port(2)=2

390 Port(3)=3

400 Port(4)=4

410 ELSE

420 PRINT "## Test Ports Selection ##"

430 ON ERROR GOTO Port_select

440 FOR I=1 TO Num_of_ports

450 PRINT "Port("&VAL$(I)&"):";

460 Port_select: !

470 INPUT "Number?",Inp_char$

480 Port(I)=IVAL(Inp_char$,10)

490 IF Port(I)<1 OR Port(I)>4 THEN Port_select

500 FOR J=1 TO I-1

510 IF Port(I)=Port(J) THEN Port_select

520 NEXT J

530 PRINT Port(I)

540 NEXT I

550 OFF ERROR

560 END IF

570 SUBEND

580 !=============================================

590 ! Electronic Calibration Function

600 !=============================================

610 SUB Ecal(@Agte507x,Ch$,INTEGER Num_of_ports,INTEGER Port(*))

620 DIM Buff$[9],Err_msg$[100]

630 INTEGER Err_no,Port1

640 !

650 PRINT "## Full "&VAL$(Num_of_ports)&" Port ECal ##"

660 !

670 OUTPUT @Agte507x;"*CLS"

680 SELECT Num_of_ports

690 CASE 1

700 PRINT "Connect Port "&VAL$(Port(1))&" to ECal Module."

710 PRINT "Then push [Enter] key."

720 INPUT "",Buff$

730 OUTPUT @Agte507x;":SENS"&Ch$&":CORR:COLL:ECAL:SOLT1 ";Port(1)

740 CASE 2

750 PRINT "Connect Port "&VAL$(Port(1));

760 PRINT " and Port "&VAL$(Port(2))&" to ECal Module."

770 PRINT "Then push [Enter] key."

780 INPUT "",Buff$

790 OUTPUT @Agte507x;":SENS"&Ch$&":CORR:COLL:ECAL:SOLT2 ";Port(1); ",";Port(2)

800 CASE 3

810 PRINT "Connect Port "&VAL$(Port(1));

820 PRINT ", Port "&VAL$(Port(2));

830 PRINT " and Port "&VAL$(Port(3))&" to ECal Module."

840 PRINT "Then push [Enter] key."

850 INPUT "",Buff$

860 OUTPUT @Agte507x;":SENS"&Ch$&":CORR:COLL:ECAL:SOLT3 ";Port(1); ",";Port(2);",";Port(3)

870 CASE 4

880 PRINT "Connect Port 1, Port 2, Port 3 and Port 4 to to ECal Mod ule."

890 PRINT "Then push [Enter] key."

900 INPUT "",Buff$

910 OUTPUT @Agte507x;":SENS"&Ch$&":CORR:COLL:ECAL:SOLT4 1,2,3,4"

920 END SELECT

930 PRINT "Executing ..."

940 OUTPUT @Agte507x;":SYST:ERR?"

950 ENTER @Agte507x;Err_no,Err_msg$

960 IF Err_no<>0 THEN

970 PRINT "Error occurred!!"

980 PRINT " No:";Err_no,"Description: "&Err_msg$

990 PRINT "ECAL INTERRUPT!!"

1000 ELSE

1010 PRINT "Done"

1020 END IF

1030 SUBEND