chiark / gitweb /
detpic/display-nmra: new NmraAssist::HighPassFilter for more reliable capture of...
[trains.git] / detpic / display-nmra
1 #!/bin/sh
2 set -ex
3
4 xpixels=1024
5 ypixels=768
6 ypersamp=20
7 fsd=1.0
8
9 perl -e <t.nmra.dat '
10         use NmraAssist;
11
12         $filter= NmraAssist::HighPassFilter->new();
13
14         for (;;) {
15                 @l= ();
16                 $ticks= "";
17                 undef $tickat;
18                 print "\n"x3;
19                 for ($x=0; $x<'$xpixels'; $x++) {
20                         $_= <>;
21                         last unless length;
22                         next if m/^\;/;
23                         m/^\s*([-e0-9.]+)\s+([-0-9.]+)\s*$/ or die;
24                         ($t,$samp)=($1,$2);
25                         $samp= $filter->transform($t, $samp);
26                         $h= sprintf "%d",
27                                 ($samp/(2.0*'$fsd') + 0.5) * ('$ypersamp'-1);
28                         for ($y=0, $l=0; $y<'$ypersamp'; $y+=2, $l++) {
29                                 $c= $h==$y ? "_" : $h==$y+1 ? "~" : " ";
30                                 $l[$l] .= $c;
31                         }
32                         if (!defined $tickat && $samp > 0 && $lastsamp < 0) {
33                                 $tickat= $t;
34                         }
35                         if (defined $tickat && $t >= $tickat) {
36                                 $ticks.= ".";
37                                 $tickat += 58e-6 * 2;
38                         } else {
39                                 $ticks.= " ";
40                         }
41                         $lastsamp= $samp if $samp < 0 || $samp > 0;
42                 }
43                 foreach $l (reverse @l) {
44                         print $l, "\n" or die $!;
45                 }
46                 print "\n"x2, $ticks, "\n"x6 or die $!;
47                 last unless length;
48         }
49 ' >t.nmra.ptxt
50
51 xterm -fn nil2 \
52         -geometry ${xpixels}x$(($ypixels * ($ypsersamp+1)/2)) \
53         -e less -sS t.nmra$rate.ptxt
54
55 exit 0