]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
Fixed unpacker bug with events with size 0
authorJan Michel <j.michel@gsi.de>
Tue, 20 Aug 2013 11:44:07 +0000 (13:44 +0200)
committerJan Michel <j.michel@gsi.de>
Tue, 20 Aug 2013 11:44:07 +0000 (13:44 +0200)
tools/preview/unpack_hld.pl

index 2ee7e90093b7b81d66786ede227930696211d17a..a3f1ac84f3e0ab636f5970f438bcd58438b3bc1c 100755 (executable)
@@ -4,6 +4,7 @@ use English;
 use strict;
 use Getopt::Long;
 use Data::Dumper;
+use Data::TreeDumper;
 use FileHandle;
 use feature "switch";
 use POSIX qw/strftime/;
@@ -419,8 +420,9 @@ sub analyzeData() {
       #Could it be...?
       if($SensorHead != 0xffffffff) {
         #Something is really wrong with data. Skip SubEvent!
-        printf("Broken Sensor Header\n") if $opt_frameinfo;
-        $Statistics->{$SensorId}->{Broken}++;
+        printf("Broken Sensor Header $EvtId\n") if $opt_frameinfo;
+        $Statistics->{$SensorId}->{RealBroken}++;
+        
         last SSELoop;
         }
         
@@ -445,6 +447,10 @@ sub analyzeData() {
         printf("\t\t\tHeader\t%08x\tFrame\t%08x\tLength\t%i\n",
                 $SensorDummy, $SensorNumber, $SensorLength)  if $opt_frameinfo;
 
+        if($SensorLength == 0) {
+          $pos+=2;
+          next ;
+          }
         my $FrameEndPos = $pos + $SensorLength*2;
         my ($d, $line, $column, $pixels, $statecnt, $ovf) = (0,0,0,0,0,0);
         while(1) {
@@ -514,14 +520,14 @@ sub WriteResults {
       my $s = sprintf("%04x",$id);
 
       print $fg strftime("set label 100 \"%H:%M:%S\" at screen 0.98,0.02 right tc rgb \"#000044\" font \"monospace,8\"\n", localtime());
-      print $fg  "set label 101 \"".$hitcount->{$id}." States, $Statistics->{$id}->{Valid} good, $Statistics->{$id}->{Broken} broken\" at screen 0.02,0.02 left tc  rgb \"#000044\" font \"monospace,8\"\n" ;
+      print $fg  "set label 101 \"".$hitcount->{$id}." States, ".($Statistics->{$id}->{Valid}||0)." good, ".($Statistics->{$id}->{Broken}||0)." broken, ".($Statistics->{$id}->{RealBroken}||0)." invalid\" at screen 0.02,0.02 left tc  rgb \"#000044\" font \"monospace,8\"\n" ;
       print $fg  "set output '$opt_picpath/image_recalibrated_$s$num.png';\n";
       print $fg  "plot '-' matrix with image\n";
       }
     else {
       my $s = sprintf("%04x",$id);
       print $fg strftime("set label 100 \"%H:%M:%S\" at screen 0.98,0.02 right tc rgb \"#000044\" font \"monospace,8\"\n", localtime());
-      print $fg  "set label 101 \"".$hitcount->{$id}." States, $Statistics->{$id}->{Valid} good, $Statistics->{$id}->{Broken} broken\" at screen 0.02,0.02 left tc  rgb \"#000044\" font \"monospace,8\"\n" ;
+      print $fg  "set label 101 \"".$hitcount->{$id}." States, ".($Statistics->{$id}->{Valid}||0)." good, ".($Statistics->{$id}->{Broken}||0)." broken, ".($Statistics->{$id}->{RealBroken}||0)." invalid\" at screen 0.02,0.02 left tc  rgb \"#000044\" font \"monospace,8\"\n" ;
       print $fg  "set output '$opt_picpath/image_recalibrated_$s$num.png';\n";
       print $fg  "replot\n";
     
@@ -545,7 +551,7 @@ sub WriteResults {
     $fg->close();
     $fg = undef;
     }
-    
+  print DumpTree $Statistics;
 
   }