10  ! GETCAP
20  !------------------------------------------------------
30  ! HPBASIC/IBASIC Program; Time Capture Data Transfer
40  ! This program sets up a time capture measurement and
50  ! reads the time capture data into and array. The time
60  ! capture data is then modified and put back into the
70  ! capture buffer.
80  !
90  ! NOTE: Connect the HP 35670A Source output to the
100 ! Channel 1 input before running this program.
110 !-------------------------------------------------------
120 !
130 DIM Y(1:100,1:1024)
140 !
150 IF POS(SYSTEM$("SYSTEM ID"),"HP 35670") THEN
160    Address=800
170 ELSE 
180    Address=711
190 END IF 
200 !
210 ASSIGN @Analyzer TO Address
220 ASSIGN @Analyzer_bin TO Address;FORMAT OFF
230 !
240 !
250 OUTPUT @Analyzer;"SYST:PRES"
260 OUTPUT @Analyzer;"VOLT1:RANG 2 VPK"
270 OUTPUT @Analyzer;"OUTP ON"
280 OUTPUT @Analyzer;"SOUR:VOLT 2 VPK"
290 OUTPUT @Analyzer;"SOUR:FREQ 100 HZ"
300 OUTPUT @Analyzer;"CALC:FEED 'TCAP 1'"
310 OUTPUT @Analyzer;"DISP:WIND1:TRAC:Y:TOP 5; PDIV 1"
320 OUTPUT @Analyzer;"TCAP"
330 !
340 OUTPUT @Analyzer;"*OPC?"
350 ENTER @Analyzer;Opc
360 !
370 !
380 OUTPUT @Analyzer;"FORM REAL,64"
390 !
400 OUTPUT @Analyzer;"SENSE:DATA? TCAP1"
410 ENTER @Analyzer USING "%,A,D";Resp$,I
420 ENTER @Analyzer USING "%,"&VAL$(I)&"D";Bytes
430 !
440 Points=Bytes/8
450 Records=Points/1024.
460 !
470 REDIM Y(1:Records,1:1024)
480 !
490 DISP "Getting data"
500 ENTER @Analyzer_bin;Y(*)
510 DISP 
520 !
530 ENTER @Analyzer;Term$
540 !
550 !
560 MAT Y=Y.Y
570 !
580 !
590 Max_val=MAX(MAX(Y(*),ABS(MIN(Y(*)))))
600 OUTPUT @Analyzer;"SENSE:DATA:RANGE TCAP1, "&VAL$(Max_val)
610 !
620 Bytes=Records*1024.*8.
630 OUTPUT Bytes$ USING "#,9D";Bytes
640 Bytes$=TRIM$(Bytes$)
650 Length=LEN(Bytes$)
660 !
670 OUTPUT @Analyzer;"SENSE:DATA TCAP1,#"&VAL$(Length)&Bytes$;
680 DISP "Sending data"
690 OUTPUT @Analyzer_bin;Y(*);
700 OUTPUT @Analyzer;CHR$(10) END
710 !
720 !
730 DISP "Done"
740 !
750 END
