INITiate a set of measurements
The example below illustrates how to start three measurements running concurrently.
1860 ! Start a set of concurrent measurements:
1870 !
1880 OUTPUT Test_set;"INIT:PVT;PFER;ORFS"
FETCh measurement results using a subroutine
In a typical control program, measurements are repeated on various frequencies and power levels. Therefore, it is desirable to have a subroutine capable of fetching multiple measurement results. The example code below demonstrates how you might create a subroutine for fetching the measurement results. Refer to
Step 5: INITiate and FETCh Measurements
for more information about the different measurement results that are available and how to fetch them.
3630 SUB Global_fetch
3640 OPTION BASE 1
3650 COM /Address/Test_set
3660 REAL Pvt(5)
3670 !
3680 ! Determine if a measurement is done:
3690 !
3700 LOOP
3710 OUTPUT Test_set;"INIT:DONE?"
3720 ENTER Test_set;Meas_done$
3730 !
3740 ! Obtain measurement results: Each measurement illustrates a
3750 ! different way of reading in results. There is no one right way.
3760 ! The method used is application dependent. Note that the examples
3770 ! do not show all possible ways.
3780 !
3790 SELECT Meas_done$
3800 !
3810 CASE "PVT"
3820 OUTPUT Test_set;"FETC:PVT?"
3830 ENTER Test_set;Integrity,Mask,Txp,Pvt1,Pvt2,Pvt3,Pvt4,Pvt5
3840 IF (Integrity=0) THEN
3850 Print_pvt(Mask,Txp,Pvt1,Pvt2,Pvt3,Pvt4,Pvt5)
3860 ELSE
3870 GOSUB Bad_measurement
3880 END IF
3890 !
3900 CASE "PFER"! Phase & Frequency Error measurement done.
3910 OUTPUT Test_set;"FETC:PFER?"
3920 ENTER Test_set;Integrity,Rms_ph_er,Peak_ph_er,Worst_frq_er
3930 IF (Integrity=0) THEN
3940 PRINT "RMS Phase Error: ";Rms_ph_er;" deg"
3950 PRINT "Peak Phase Error: ";Peak_ph_er;" deg"
3960 PRINT "Worst Freq Error: ";Worst_frq_er;" Hz"
3970 ELSE
3980 GOSUB Bad_measurement
3990 END IF
4000 !
4010 CASE "ORFS"! ORFS measurement done.
4020 !
4030 ! This code illustrates a more `generic' approach to reading
4040 ! measurement results. By using the capabilities designed into
4050 ! high-level measurements, routines that access measurement
4060 ! results do not have to explicitly know what the measurement
4070 ! execution conditions were. That information can be determined
4080 ! at the time the measurement results are queried.
4090 !
4100 OUTPUT Test_set;"FETC:ORFS:INT?"! Check integrity.
4110 ENTER Test_set;Integrity
4120 IF (Integrity=0) THEN
4130 ! Get the number of offsets tested.
4140 OUTPUT Test_set;"SET:ORFS:SWIT:FREQ:POIN?"
4150 ENTER Test_set;Points
4160 IF Points THEN ! Only query if one or more offsets tested.
4170 ALLOCATE Swit_res(Points),Swit_offs(Points)
4180 ! Get measurement offsets.
4190 OUTPUT Test_set;"SET:ORFS:SWIT:FREQ?"
4200 ENTER Test_set;Swit_offs(*)
4210 ! Get results
4220 OUTPUT Test_set;"FETC:ORFS:POW?"
4230 ENTER Test_set;Tx_power
4240 OUTPUT Test_set;"FETC:ORFS:SWIT:MAX?"
4250 ENTER Test_set;Swit_res(*)
4260 PRINT USING "19X,""TX Power ="",M2D.2D,"" dBm""";Tx_power
4270 PRINT " Offset(kHz) Level(dBm)"
4280 PRINT " ----------- ----------"
4290 Orfs_image: IMAGE 6X,M4D.2D,12X,M4D.2D
4300 FOR J=1 TO Points
4310 PRINT USING Orfs_image;(Swit_offs(J)/1.E+3),Swit_res(J)
4320 NEXT J
4330 DEALLOCATE Swit_res(*),Swit_offs(*)
4340 END IF
4350 ! Get the number of offsets tested.
4360 OUTPUT Test_set;"SET:ORFS:MOD:FREQ:POIN?"
4370 ENTER Test_set;Points
4380 IF Points THEN ! Only query if one or more offsets tested.
4390 ALLOCATE Mod_res(Points),Mod_offs(Points)
4400 ! Get measurement offsets
4410 OUTPUT Test_set;"SET:ORFS:MOD:FREQ?"
4420 ENTER Test_set;Mod_offs(*)
4430 ! Get results
4440 OUTPUT Test_set;"FETC:ORFS:POW?;MOD?"
4450 ENTER Test_set;Tx_power,Pwr_30khz,Mod_res(*)
4460 PRINT "ORFS Mod Results: TCH=";Tch;"and TXL=";Ms_pwr_lvl
4470 PRINT "30 KHz BW Power =";Pwr_30khz;" dBm"
4480 PRINT " Offset(kHz) Level(dB)"
4490 PRINT " ----------- ---------"
4500 FOR J=1 TO Points
4510 PRINT USING Orfs_image;(Mod_offs(J)/1.E+3),Mod_res(J)
4520 NEXT J
4530 DEALLOCATE Mod_res(*),Mod_offs(*)
4540 END IF
4550 ELSE
4560 GOSUB Bad_measurement
4570 END IF
4580 END SELECT
4590 EXIT IF Meas_done$="NONE"
4600 END LOOP ! If `WAIT' is returned from `INIT:DONE?' query, it
4610 ! just falls through the loop.
4620 SUBEXIT