From 08d3f51127aa9b6ba17b027a8df39fd15a757642 Mon Sep 17 00:00:00 2001 From: "Hadaq@styx" Date: Thu, 12 Dec 2013 00:00:31 +0100 Subject: [PATCH] added CTS Hodo channels to scaler view --- web/htdocs/tools/scaler.pl | 73 +++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/web/htdocs/tools/scaler.pl b/web/htdocs/tools/scaler.pl index cf10547..50b6727 100755 --- a/web/htdocs/tools/scaler.pl +++ b/web/htdocs/tools/scaler.pl @@ -5,6 +5,10 @@ use CGI::Carp qw(fatalsToBrowser); use lib qw|../commands htdocs/commands|; use xmlpage; # use Data::TreeDumper; +#use Data::Dumper; + +# my $logfh; +# open ($logfh, ">>/tmp/debug_out.log"); my $olddata, my $t, my $dataarr; @@ -25,6 +29,10 @@ if($ENV{'QUERY_STRING'} =~ /get/) { $olddata = lock_retrieve("/tmp/scalers.$p[1].store"); } my $data = trb_registertime_read_mem(0x3820,0xc001,0,64) or die trb_strerror(); + my $data2 = trb_registertime_read_mem(0x8000,0xa134,0,3) or die trb_strerror(); + foreach my $k (keys %$data2) { $data->{$k} = $data2->{$k};} + +# print $logfh Dumper $data; print $logfh Dumper $data2; my $delay = ($data->{0x3820}->{time}->[0]||0) - ($olddata->{values}->{0x3820}->{time}->[0]||60000); $delay += 0x10000 if ($delay < 0); $delay *= 16.*125/100; @@ -75,9 +83,56 @@ if($ENV{'QUERY_STRING'} =~ /get/) { print $t; print "\n"; } +### +# Scalers from CTS AddON + $delay = ($data->{0x8000}->{time}->[0]||0) - ($olddata->{values}->{0x8000}->{time}->[0]||60000); + $delay += 0x10000 if ($delay < 0); + $delay *= 16.; + $delay = 1E6 if $delay == 0; + for(my $i = 0; $i<3; $i++) { + $rate->[64+$i] = (($data->{0x8000}->{value}[$i]||0) & 0x00ffffff) - (($olddata->{values}->{0x8000}->{value}[$i]||($data->{0x3820}->{value}[$i]||0)) & 0x00ffffff); + $rate->[64+$i] += 0x01000000 if ($rate->[64+$i] < 0); + $rate->[64+$i] = $rate->[64+$i] / ($delay/1E6); + } + my @dat = $data->{0x8000}->{value}; + my $start = -9; + my $historyexists = exists($olddata->{rate}); + if ($historyexists && scalar @{$olddata->{rate}} < 9) { + $start = -(scalar @{$olddata->{rate}}); + } - - printf("

Time between last two readings (mod 1.31s) %d ms",$delay/1000.); + my $avgsum = 0; $sum = 0; + for(my $j=0;$j<2;$j++) { + $sum += $rate->[64+$j*2]; + $avgsum += $rate->[64+$j*2]; + if($historyexists) { + foreach my $k ($start .. -1) { + $avgsum += $olddata->{rate}->[$k]->[64+$j*2]||0; + } + } + } + $avgsum /= 1-$start; + print "


"; + $t = sprintf("
CTSAverageCurrentRatio"); + $t .= sprintf("",$j+5,$q,time()/5); + $t .= sprintf("
Sum%d%d",$avgsum,$sum); + for(my $j=0;$j<2;$j++) { + my $avgrate = $rate->[$j*2+64]; + if($historyexists) { + foreach my $k ($start .. -1) { + $avgrate += $olddata->{rate}->[$k]->[$j*2+64]||0; + } + } + $avgrate /= 1-$start; + $t .= sprintf("
Hodo %d%d",$j+1, $avgrate); + $t .= sprintf("%d",$data->{0x8000}->{value}[$j*2],$rate->[$j*2+64]); + $t .= sprintf("%.1f%%",$rate->[$j*2+64]/($sum||1E334)*100); + } + #$t =~ s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g; + print $t; + print "
\n"; + + printf("

Time between last two readings (mod 1.6s) %d ms",$delay/1000.); printf(". %d entries",scalar @{$olddata->{rate}}); if((scalar @{$olddata->{rate}}) >= 100) { shift(@{$olddata->{rate}}); @@ -110,10 +165,12 @@ elsif($ENV{'QUERY_STRING'} =~ /plot/) { $cmd .= "unset xtics;\n"; $cmd .= "set ylabel offset 1,0 \\\"kHz\\\";\n"; $cmd .= "set lmargin 8;set rmargin 0.1;set tmargin 0.7; set bmargin 0.7;\n"; - $cmd .= "plot '-' with lines,'-' with lines,'-' with lines, '-' with lines\n"; - for(my $j=0; $j<4; $j++) { + $cmd .= "plot '-' with lines,'-' with lines,'-' with lines, '-' with lines\n" if $num<5; + $cmd .= "plot '-' with lines,'-' with lines\n" if $num==5; + for(my $j=0; $j<($num==5?2:4); $j++) { foreach my $r (@{$data->{rate}}) { - $cmd .= ($r->[$p[1]*16+8+2*$j]/1000.)."\n"; + $cmd .= ($r->[$num*16+8+2*$j]/1000.)."\n" if $num<5; + $cmd .= ($r->[64+2*$j]/1000.)."\n" if $num==5; } $cmd .= "\ne\n"; } @@ -137,12 +194,12 @@ else { my @setup; $setup[0]->{name} = "Scalers"; - $setup[0]->{cmd} = "get.".$ts; - $setup[0]->{period} = 1000; + $setup[0]->{cmd} = "get".$ts; + $setup[0]->{period} = 800; $setup[0]->{generic} = 0; xmlpage::initPage(\@setup,$page); } -return 1; \ No newline at end of file +return 1; -- 2.43.0