]> jspc29.x-matter.uni-frankfurt.de Git - hades_mdc_settings.git/commitdiff
add output of proper commands, execute and write option
authorJan Michel <michel@physik.uni-frankfurt.de>
Fri, 3 Feb 2023 12:58:38 +0000 (13:58 +0100)
committerJan Michel <michel@physik.uni-frankfurt.de>
Fri, 3 Feb 2023 12:58:38 +0000 (13:58 +0100)
scripts/check_voltages.pl

index 927fccf6a9f65ef69690be35293afc0fdf2b02b4..c0bef12566a6fabf7e96fb31b021efba516f9046 100755 (executable)
@@ -10,36 +10,69 @@ use HADES::TrbNet;
 
 trb_init_ports() or die trb_strerror();
 
+my $write;
+my $execute;
+my $help;
 
+Getopt::Long::Configure(qw(gnu_getopt));
+GetOptions(
+ 'help|h'  => \$help,
+ 'write|w'  => \$write,
+ 'exec|e'  => \$execute,
+);
 
+if($help) {
+print <<HELP;
+./check_voltages.pl [-e] [-w]
+
+Reads voltages of all MBO and suggests changes.
+Use -e to directly execute commands and -w to store changes in file.
+HELP
+exit;
+}
+
+
+$write = $write?'-w':'';
 
 my $values = trb_register_read_mem(0xfe90,0xd488,0,4);
 
 my $stepsize = 200;
 my $headroom = 250;
 my @nominal = (1100,3300);
-print("Suggested changes to voltage settings:\n");
-print("Board\tActual\tChannel\tChange\n"); 
+
+
+
+print("Suggested changes to voltage settings:\n\n");
+
 foreach my $b (sort keys %{$values}) {
   my $value = $values->{$b}[0] / 16;
   my $diff = $value - $nominal[0] - $headroom;
   if($diff > $stepsize) {
     my $sugg = $diff/$stepsize ;
-    printf("%04x\t%i\t%i\t%i\n",$b,$value,1,-$sugg);
+    makechange($b,$value,1,-$sugg);
+    
     }
   if($diff < 0) {
     my $sugg = (-$diff)/$stepsize + 1;
-    printf("%04x\t%i\t%i\t%i\n",$b,$value,1,$sugg);
+    makechange($b,$value,1,$sugg);
     }
 
   $value = $values->{$b}[2] / 16;
   $diff = $value - $nominal[1] - $headroom;
   if($diff > $stepsize) {
     my $sugg = $diff/$stepsize ;
-    printf("%04x\t%i\t%i\t%i\n",$b,$value,0,-$sugg);
+    makechange($b,$value,0,-$sugg);
     }
   if($diff < 0) {
     my $sugg = (-$diff)/$stepsize + 1;
-    printf("%04x\t%i\t%i\t%i\n",$b,$value,0,$sugg);
+    makechange($b,$value,0,$sugg);
     }
 }
+
+
+sub makechange {
+  my ($b,$v,$c,$r) = @_;
+  my $cmd = sprintf("./mdc_voltage.pl %s -b 0x%04x\t-c %i\t-r %i\t#%i mV\n",$write,$b,$c,$r,$v);
+  print $cmd;
+  qx($cmd) if defined $execute;
+  }