

10 '   ******************************************************************
20 '   * Example EXAM4.BAS calculation of linearity error               *
30 '   * swept measurement level versus level beginning with max level  *
40 '   * Setup for this example: EXAM4.SAC (Actual Setup Mode!)         *
50 '   ******************************************************************
60 '
70 Upl=20
80 IEC TERM 10: IEC TIME 10000
90 IEC OUT Upl,"MMEM:LOAD:STAT 0,'C:\UPL\IEC_EXAM\EXAM4.SAC'": 'load setup
100 '
110 IEC OUT Upl,"init:cont off;*WAI": ' set single sweep
120 '                                   trigger and wait for termination
130 IEC OUT Upl,"trac:poin? trac1": 'ask for number of points
140 IEC IN Upl,W$: Poin=VAL(W$): '   read out of number of points
150 '   Dimensioning
160 DIM A(Poin),B(Poin),X(Poin),Ak(Poin),Bk(Poin)
170 '
180 IEC OUT Upl,"trac? trac1"
190 IEC TERM 44: ' Stringterminator ','
200 FOR Ix=0 TO Poin-2
210  IEC IN Upl,S$: A(Ix)=VAL(S$): '          read out of trace1 data
220 NEXT Ix
230 IEC TERM 10: IEC IN Upl,S$: A(Poin-1)=VAL(S$): ' last value
240 '  the results are now available in A(0) to A(Poin-1)
250 '
260 IEC OUT Upl,"trac? trac2"
270 IEC TERM 44: '              read out of trace2 data
280 FOR Ix=0 TO Poin-2
290  IEC IN Upl,S$: B(Ix)=VAL(S$)
300 NEXT Ix
310 IEC TERM 10: IEC IN Upl,S$: B(Poin-1)=VAL(S$)
320 '  the results are now available in B(0) to B(Poin-1)
330 '
340 IEC OUT Upl,"sour:list:volt?"
350 IEC TERM 44
360 FOR Ix=0 TO Poin-2: '      read out of X-values
370  IEC IN Upl,S$: X(Ix)=VAL(S$)
380 NEXT Ix
390 IEC TERM 10: IEC IN Upl,S$: X(Poin-1)=VAL(S$)
400 '  the results are now available in X(0) to X(Poin-1)
410 '
420 ' Calculation of linearity error.
430 ' All measured values are nomalized to the X-values
440 ' with ideal linearity all values will be = 1
450 ' the display in dBr related to 1 V shows the linearity error
460 Ak$=""
470 Bk$=""
480 FOR N=0 TO Poin-2
490  Ak(N)=(A(N)/X(N))
500  Ak$=Ak$+STR$(Ak(N))+","
510  Bk(N)=(B(N)/X(N))
520  Bk$=Bk$+STR$(Bk(N))+","
530 NEXT 
540 Ak(N)=(A(N)/X(N))
550 Ak$=Ak$+STR$(Ak(N)): ' Last value without ','
560 Bk(N)=(B(N)/X(N))
570 Bk$=Bk$+STR$(Bk(N)): ' Last value without ','
580 '
590 IEC OUT Upl,"trac trac1,"+Ak$: ' write calculated values in trace1 buffer
600 IEC OUT Upl,"trac trac2,"+Bk$
610 IEC OUT Upl,"DISP:TRAC:Y:UNIT DBR": '          select unit dBr
620 IEC OUT Upl,"DISP:TRAC:Y:TOP 1 DBR": '         scaling of Y-axis
630 IEC OUT Upl,"DISP:TRAC:Y:BOTT -1 DBR"
640 IEC OUT Upl,"DISP:TEXT 'Linearity error'": '   text in graphic
650 IEC LAD Upl: IEC GTL 
660 END 
