;function HHMMSS, axis, index, value ; ;hour = floor(value) ;minute = floor((value - double(hour)) * 60.0) ;sec = floor((value - double(hour) - double(minute) / 60.0) * 3600.0) ;msec = (value - double(hour) - double(minute) / 60.0 - double(sec) / 3600.0) * 3600000.0 ; ;;return, string(hour, minute, sec, msec, $ ;; format = "(i2.2, ':', i2.2, ':', i2.2, '.', d)") ; ;if msec ge 1000.0 then begin ; sec = sec + 1 ; msec = msec - 1000.0 ;endif ; ;if msec ge 500.0 then sec = sec + 1 ; ;if sec ge 60.0 then begin ; minute = minute + 1 ; sec = sec - 60.0 ;endif ;if minute ge 60.0 then begin ; hour = hour + 1 ; minute = minute - 60.0 ;endif ; ;return, string(hour, minute, sec, $ ; format = "(i2.2, ':', i2.2, ':', i2.2)") ;end ; ; Main-Program: pro psa, arg chain = ' ' if not (keyword_set(arg)) then begin print, "Usage: psa, 'chain'" print, ' ' while not (chain eq 'a' or chain eq 'b') do begin print, 'Enter chain:' read, chain endwhile endif else chain = arg print, ' ' print, 'Output Medium: ' print, ' ' print, ' output.ps (0)' print, ' output.eps (1)' print, ' Tektronix-Screen (2)' print, ' X-Screen (3)' print, ' Windows (4)' print, ' terminate program (5)' read, medium case medium of 0: begin set_plot, 'PS' device, filename='output.ps', $ ; /landscape, $ ; xoffset=2.5, yoffset=26., $ ; xsize=24., ysize=16. /portrait, $ xoffset=2., yoffset=3., $ xsize=16., ysize=24. end 1: begin set_plot, 'PS' device, filename='output.eps', $ /encapsulated, $ xsize=24., ysize=16. end 2: begin set_plot, 'TEK' end 3: begin set_plot, 'X' ; window, 0, xsize=650.*210/297, ysize=650. ; !p.color=255 ; !p.background=0 end 4: begin window, 0, xsize=600., ysize=400. ; !p.color=255 ; !p.background=0 end else: begin print, 'Programmende' stop end endcase dummy = ' ' ; t_start and t_end determination openr, 1,'carriera.dat', error = err if err ne 0 then begin print, !err_string stop endif dat = dblarr(2) readf, 1, dat t_start = dat(0) while not eof(1) do readf, 1, dat close, 1 t_end = dat(0) print, 'Time scale:' print, ' ' print, ' t_0 = 0 (1)' print, ' Start of test = 0 (2)' print, ' scale with given time (3)' read, tscale case tscale of 1: begin print, 'Enter moment of t_0 as recorded from HK3 (in hours)' read, t_sub xtit = '!18t - t!D0!N!X [min]' end 2: begin t_sub = t_start xtit = 'TEST ELAPSED TIME [min] (T=0 <=> ' + string(floor(t_start), format = '(I0)') + ':' + string((t_start - floor(t_start)) * 60.0, format = '(D4.1)') + ' SCET)' end else: begin t_sub = 0.0 xtit = 'UT [min]' end endcase t_start = t_start - t_sub t_end = t_end - t_sub print, 'Which time range (in minutes, remember t0!) ?' print, 'Enter minimum time (-1 for full time)' read, mintime if mintime ne -1 then begin print, 'Enter maximum time' read, maxtime !x.range(0) = mintime !x.range(1) = maxtime endif else begin !x.range(0) = t_start * 60.0 !x.range(1) = t_end * 60.0 endelse !x.style = 1 ;if !x.range(1) - !x.range(0) le 10.0 then begin ; print, 'Connect data points by lines? (y/n)' ; read, dummy ; if dummy eq 'y' then psy = 0 else psy = 3 ;endif else psy = 3 print, 'Connect NCO-data points by lines? (y/n)' read, dummy if dummy eq 'y' then ncopsy = 0 else ncopsy = 3 print, 'Connect AGC-data points by lines? (y/n)' read, dummy if dummy eq 'y' then agcpsy = 0 else agcpsy = 3 print, 'Enter test name:' read, dummy if chain eq 'a' then $ ptit = 'PSA-A parameters: ' + dummy $ else $ ptit = 'PSA-B parameters: ' + dummy print, 'Enter date of test:' read, dummy ptit = ptit + ', ' + dummy xyouts, 0.5, 0.5, /normal, '!5' ; setzt den Font noplots = 10 !p.multi = [0, 1, noplots, 0, 0] ; legt fest, wieviele plots auf 1 seite kommen divid = double(noplots + 3) ; divider for plot region and position !x.thick = 3.0 !y.thick = 3.0 ;!p.charsize = 2.0 !p.charsize = 1.5 !p.charthick = 2.0 ; Abfragen print, 'Which frequency range ?' print, 'Enter minimum frequency (0 for auto detect)' read, minnco if minnco ne 0 then begin print, 'Enter maximum frequency' read, maxnco ystylenco = 1 endif else begin maxnco = 0.0 ystylenco = 3 endelse print, 'Which dNCO/dt range ?' print, 'Enter absolute value of limit for dNCO/dt (0 for auto detect)' print, 'recommended: 200' read, maxderiv if maxderiv ne 0 then begin ; print, 'Enter maximum dNCO/dt' ; read, maxderiv minderiv = -1 * maxderiv ystylederiv = 1 endif else begin minderiv = 0.0 ystylederiv = 3 endelse print, ' Use calibrated AGC data (0)' print, ' Use raw AGC telemetry data (1)' read, agcflag print, 'Which AGC range ?' print, 'Enter minimum AGC (0 for auto detect)' print, 'recommended: 0' read, minagc if minagc ne 0 then begin print, 'Enter maximum AGC' read, maxagc ystyleagc = 1 endif else begin maxagc = 0.0 ystyleagc = 3 endelse fn = ' ' ; CARRIER LOCK-Plot (earlier: also used for determining t_start, t_end) fn = 'carrier' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 4./divid, 1.0, 5./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 4./divid, 1.0, 5./divid], $ xtitle = ' ', $ ytitle = 'CARRIER', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', '0', '1', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; NCO-Plot fn = 'nco' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 11./divid, 1.0, 1.0] plot, dat(0,*), dat(1,*), $ position = [0.1, 11./divid, 1.0, 1.0], $ ; psym = psy, $ psym = ncopsy, $ xtitle = ' ', $ yrange = [minnco, maxnco], $ ystyle = ystylenco, $ ytitle = 'f!DR!N [Hz]', $ xtickname = replicate(' ', 30), $ xticklen = 0.03 ; gestrichelte Null-Linie oplot, [!x.crange(0), !x.crange(1)], [0.0, 0.0], $ linestyle = 2, thick = 0.5 ; dNCO/dt-Plot, sweep rate for i=long(0), ln-2 do begin ; if dat(0,i+1) gt dat(0,i) then begin ; dat(1,i) = (dat(1,i+1) - dat(1,i)) / ((dat(0,i+1) - dat(0,i)) * 3600.0) dat(1,i) = (dat(1,i+1) - dat(1,i)) / 0.125 ; endif else begin ; if i gt 0 then begin ; dat(1,i) = dat(1,i-1) ; endif else dat(1,i) = 0.0 ; endelse endfor !p.region = [0.0, 9./divid, 1.0, 11./divid] plot, dat(0,0:ln-2), dat(1,0:ln-2), $ position = [0.1, 9./divid, 1.0, 11./divid], $ xtitle = ' ', $ yrange = [minderiv, maxderiv], $ ystyle = ystylederiv, $ ytitle = 'df!DR!N/dt [Hz/sec]', $ xtickname = replicate(' ', 30), $ xticklen = 0.03 ; gestrichelte Null-Linie oplot, [!x.crange(0), !x.crange(1)], [0.0, 0.0], $ linestyle = 2, thick = 0.5 ; Selected Frequency Plot fn = 'selfreq' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 8./divid, 1.0, 9./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 8./divid, 1.0, 9./divid], $ xtitle = ' ', $ ytitle = 'f!DR!N_SELECT', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', 'B', 'D', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; AGC-Plot if agcflag eq 0 then begin fn = 'agc' + chain + '.dat' yti = 'AGC [dBm]' endif else begin fn = 'agc' + chain + '_raw.dat' yti = 'AGC TM' endelse openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) ; inverting AGC range for raw AGC TM values if agcflag eq 1 then begin if minagc eq 0 then begin minagc = max(dat(1,*)) maxagc = min(dat(1,*)) endif else begin if minagc lt maxagc then begin dtmp = maxagc maxagc = minagc minagc = dtmp endif endelse endif !p.region = [0.0, 6./divid, 1.0, 8./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 6./divid, 1.0, 8./divid], $ xtitle = ' ', $ yrange = [minagc, maxagc], $ ystyle = ystyleagc, $ ; ytitle = 'AGC [dBm]', $ ytitle = yti, $ xtickname = replicate(' ', 30), $ xticklen = 0.03, $ psym = agcpsy ; RSW-Plot fn = 'rsw' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 5./divid, 1.0, 6./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 5./divid, 1.0, 6./divid], $ xtitle = ' ', $ ytitle = 'RSW', $ ystyle = 1, $ yrange = [0., 7.], $ yticks = 7, $ ytickv = [0., 1., 2., 3., 4., 5., 6., 7.], $ ytickname = [' ', ' ', '2', ' ', '4', ' ', '6', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; Sub-Carrier-Plot fn = 'subcar' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 3./divid, 1.0, 4./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 3./divid, 1.0, 4./divid], $ xtitle = ' ', $ ytitle = 'SUBCARRIER', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', '0', '1', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; BIT-SYNC-Plot fn = 'bitsync' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 2./divid, 1.0, 3./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 2./divid, 1.0, 3./divid], $ xtitle = ' ', $ ytitle = 'BIT SYNC', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', '0', '1', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; Syncro marker-Plot fn = 'syncmar' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) !p.region = [0.0, 1./divid, 1.0, 2./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 1./divid, 1.0, 2./divid], $ xtitle = ' ', $ ytitle = 'SYNC MARKER', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', '0', '1', ' '], $ yminor = -1, $ xtickname = replicate(' ', 30), $ xticklen = 0.06 ; Viterbi-Plot fn = 'viterby' + chain + '.dat' openr, 1, fn, error = err if err eq 0 then begin ln = long(0.0) while not eof(1) do begin readf, 1, dummy ln = ln + 1 endwhile close, 1 dat = dblarr(2,ln) openr, 1, fn readf, 1, dat close, 1 dat(0,*) = (dat(0,*) - t_sub) * 60.0 ; <=> Minuten endif else dat = dblarr(2,1) ;spawn, /noshell, ['cp', '/user2/duttaroy/IDL/allgemein/hhmmss.pro', '.'] ;form = 'hhmmss' !p.region = [0.0, 0., 1.0, 1./divid] plot, dat(0,*), dat(1,*), $ position = [0.1, 0., 1.0, 1./divid], $ xtitle = xtit, $ ytitle = 'VITERBI', $ ystyle = 1, $ yrange = [-1., 2.], $ yticks = 3, $ ytickv = [-1., 0., 1., 2.], $ ytickname = [' ', '0', '1', ' '], $ yminor = -1, $ xtickname = replicate('', 30), $ xticklen = 0.06 ; xtickformat = form ; xtickformat = 'HHMMSS' ;spawn, /noshell, ['rm', '-f', 'hhmmss.pro'] xyouts, 0.55, 1.0, '!A' + ptit + '!N', $ /normal, $ alignment = 0.5, $ charsize = 1.3, $ charthick = 2.0 if medium eq 0 then device, /close !x.range = 0 !x.style = 0 !y.style = 0 !x.thick = 1.0 !y.range = 0 !y.thick = 1.0 !p.multi = 0 !p.psym = 0 !p.charsize = 1.0 !p.charthick = 1.0 !p.title = '' !p.region = 0 end