From: Hadaq@CountingHouse Date: Mon, 28 Oct 2013 16:01:12 +0000 (+0100) Subject: changed paths in gui commands X-Git-Tag: pre2018~131 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=aa1d780d8b34391514c32cccc2980997659a77de;p=hadesdaq.git changed paths in gui commands --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ba1c62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +hmon/qa +hmon/logs +hmon/vertex diff --git a/control/gui/call_programs_local.sh b/control/gui/call_programs_local.sh index 5166f91..48966c3 100755 --- a/control/gui/call_programs_local.sh +++ b/control/gui/call_programs_local.sh @@ -1,6 +1,6 @@ #!/bin/bash -cd /home/hadaq/trbsoft/daq/control/gui/ -/home/hadaq/trbsoft/daq/control/gui/call_programs2.pl -geometry -0-0 & +cd /home/hadaq/trbsoft/hadesdaq/control/gui/ +/home/hadaq/trbsoft/hadesdaqdaq/control/gui/call_programs2.pl -geometry -0-0 & #cd /home/hadaq/trbsoft/daq/control/gui/ #/home/hadaq/trbsoft/daq/control/gui/call_programs.pl -geometry -0-0 diff --git a/control/gui/call_programs_wrapper.sh b/control/gui/call_programs_wrapper.sh index 247482a..6e10c77 100755 --- a/control/gui/call_programs_wrapper.sh +++ b/control/gui/call_programs_wrapper.sh @@ -1,5 +1,5 @@ -ssh -X hadesdaq02 "cd /home/hadaq/trbsoft/daq/control/gui/ -/home/hadaq/trbsoft/daq/control/gui/call_programs2.pl -geometry -0-0" & +ssh -X hadesdaq02 "cd /home/hadaq/trbsoft/hadesdaq/control/gui/ +/home/hadaq/trbsoft/hadesdaq/control/gui/call_programs2.pl -geometry -0-0" & #cd /home/hadaq/trbsoft/daq/control/gui/ #/home/hadaq/trbsoft/daq/control/gui/call_programs.pl -geometry -0-0 diff --git a/control/gui/daq/10_Start_DAQ b/control/gui/daq/10_Start_DAQ index 4d716ac..7e72d28 100755 --- a/control/gui/daq/10_Start_DAQ +++ b/control/gui/daq/10_Start_DAQ @@ -11,7 +11,7 @@ xterm -geometry 80x24 -bg orange -fg black -e bash --login -c ' source /home/hadaq/.bash_profile echo \" Connected to lxhadesdaq...\" echo \" Starting DAQ with default settings...\" - cd /home/hadaq/trbsoft/daq/main/ + cd /home/hadaq/trbsoft/hadesdaq/main/ time bash ./startup_briccolage.sh sleep 10 " diff --git a/control/gui/daq/20_Reprogram_FPGA b/control/gui/daq/20_Reprogram_FPGA index f9a76b8..dd2cc1d 100755 --- a/control/gui/daq/20_Reprogram_FPGA +++ b/control/gui/daq/20_Reprogram_FPGA @@ -10,7 +10,7 @@ notifyall.sh "DAQ" " FPGA are being reprogrammed." "STARTUP" & ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash --login -c ' - cd ~/trbsoft/daq/main/ + cd ~/trbsoft/hadesdaq/main/ ./startup.pl -f main_hades.script -o file -m TOF -m RPC -m WALL -m RICH -m SHOWER -m STARTCTS -m MDC -m MDCDATASET --eb off echo "First config run" bash startup_briccolage.sh diff --git a/control/gui/eb/10_Restart_EB b/control/gui/eb/10_Restart_EB index 46ba53d..52a4358 100755 --- a/control/gui/eb/10_Restart_EB +++ b/control/gui/eb/10_Restart_EB @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Restarting Eventbuilder 1 - 16" stoptrigger.sh - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ sleep 5 && starttrigger.sh & ./start_eb_gbe.sh ' diff --git a/control/gui/eb/20_____Stop_EB b/control/gui/eb/20_____Stop_EB index e0f1509..274bf3a 100755 --- a/control/gui/eb/20_____Stop_EB +++ b/control/gui/eb/20_____Stop_EB @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Stopping Eventbuilder 1 - 16" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e stop -n 1-16 ' " diff --git a/control/gui/eb/29_Prefix_Be b/control/gui/eb/29_Prefix_Be index 17f11d1..b391315 100755 --- a/control/gui/eb/29_Prefix_Be +++ b/control/gui/eb/29_Prefix_Be @@ -6,7 +6,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with file prefix be" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p be ' " diff --git a/control/gui/eb/30_Prefix_NoFile b/control/gui/eb/30_Prefix_NoFile index daa39ed..a5e423d 100755 --- a/control/gui/eb/30_Prefix_NoFile +++ b/control/gui/eb/30_Prefix_NoFile @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16, writing NO FILES" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d off -p '--' ' " diff --git a/control/gui/eb/40_Prefix_Te b/control/gui/eb/40_Prefix_Te index 5bcefd2..3be97c7 100755 --- a/control/gui/eb/40_Prefix_Te +++ b/control/gui/eb/40_Prefix_Te @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with prefix te" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p te ' " diff --git a/control/gui/eb/50_Prefix_Co b/control/gui/eb/50_Prefix_Co index eacd5c1..cd227af 100755 --- a/control/gui/eb/50_Prefix_Co +++ b/control/gui/eb/50_Prefix_Co @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with prefix co" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p co ' " diff --git a/control/gui/eb/70_Prefix_Ri b/control/gui/eb/70_Prefix_Ri index 2a974d8..0c88723 100755 --- a/control/gui/eb/70_Prefix_Ri +++ b/control/gui/eb/70_Prefix_Ri @@ -5,7 +5,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with prefix ri" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p ri ' " diff --git a/control/gui/eb/80_Prefix_St b/control/gui/eb/80_Prefix_St index 8b05701..0415e6f 100755 --- a/control/gui/eb/80_Prefix_St +++ b/control/gui/eb/80_Prefix_St @@ -3,7 +3,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with prefix st" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p st ' " diff --git a/control/gui/eb/90_Prefix_Md b/control/gui/eb/90_Prefix_Md index b933e23..2b2b4ab 100755 --- a/control/gui/eb/90_Prefix_Md +++ b/control/gui/eb/90_Prefix_Md @@ -3,7 +3,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder 1 - 16 with prefix md" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -e restart -n 1-16 -d on -p md ' " diff --git a/control/gui/expert/90_MDC_HighVoltageRamp b/control/gui/expert/90_MDC_HighVoltageRamp index 730b731..e607ec1 100755 --- a/control/gui/expert/90_MDC_HighVoltageRamp +++ b/control/gui/expert/90_MDC_HighVoltageRamp @@ -2,6 +2,6 @@ export myvar=$(doyoureallywant.pl "to RAMP DOWN High Voltage!") if [ $myvar == "256" ]; then exit; fi -cd /home/hadaq/trbsoft/daq/control/mdcHVgui/ -/home/hadaq/trbsoft/daq/control/mdcHVgui/call_programs2.pl +cd /home/hadaq/trbsoft/hadesdaq/control/mdcHVgui/ +/home/hadaq/trbsoft/hadesdaq/control/mdcHVgui/call_programs2.pl diff --git a/control/gui/expert/MDC_LV_Powercycle b/control/gui/expert/MDC_LV_Powercycle index 4893b3c..c16d5c9 100755 --- a/control/gui/expert/MDC_LV_Powercycle +++ b/control/gui/expert/MDC_LV_Powercycle @@ -2,6 +2,6 @@ export myvar=$(doyoureallywant.pl "to make a MDC powercycle? There will be no further warnings!") if [ $myvar == "256" ]; then exit; fi -cd /home/hadaq/trbsoft/daq/control/mdcLVgui/ -/home/hadaq/trbsoft/daq/control/mdcLVgui/call_programs2.pl +cd /home/hadaq/trbsoft/hadesdaq/control/mdcLVgui/ +/home/hadaq/trbsoft/hadesdaq/control/mdcLVgui/call_programs2.pl diff --git a/control/gui/expert/Restart_EB_IOC b/control/gui/expert/Restart_EB_IOC index c6879a5..fe6ad50 100755 --- a/control/gui/expert/Restart_EB_IOC +++ b/control/gui/expert/Restart_EB_IOC @@ -3,7 +3,7 @@ ssh -X hadaq@lxhadesdaq " xterm -geometry 80x24 -bg orange -fg black -e bash -c ' echo "Starting Eventbuilder Control Interface" - cd ~/trbsoft/daq/evtbuild/ + cd ~/trbsoft/hadesdaq/evtbuild/ ./start_eb_gbe.pl -i start -n 1-16 ' " diff --git a/control/gui/monitor/10_CTS_Mon b/control/gui/monitor/10_CTS_Mon index 710c250..32c5e69 100755 --- a/control/gui/monitor/10_CTS_Mon +++ b/control/gui/monitor/10_CTS_Mon @@ -8,7 +8,7 @@ # ssh -X hadaq@hadesdaq02 " source /home/hadaq/.bashrc export DAQOPSERVER=hadesp31 - cd /home/hadaq/trbsoft/daq/evtbuild + cd /home/hadaq/trbsoft/hadesdaq/evtbuild perl ./mon_cts.pl # sleep 1 #" diff --git a/hmon/Perl2Epics.pm b/hmon/Perl2Epics.pm deleted file mode 100644 index c886dbd..0000000 --- a/hmon/Perl2Epics.pm +++ /dev/null @@ -1,156 +0,0 @@ -package Perl2Epics; -use warnings; -use strict; -use Data::Dumper; -# use Hmon; - -use lib '/home/scs/EPICS/gcc-4.4/EPICS-3.14.12.2_linux-x86_64/base/' . '/lib/perl'; -use CA; - -$ENV{EPICS_CA_AUTO_ADDR_LIST} = 'YES'; -$ENV{EPICS_CA_ADDR_LIST} = "192.168.100.11 192.168.100.12 192.168.100.13 192.168.100.14 192.168.100.15 localhost"; - - -my $EpicsValues = {}; -my $EpicsStore = {}; -my @EpicsChans = (); -my $EpicsNames = {}; -my $errcnt = {}; - -sub callback { - my ($chan, $status, $data) = @_; -# print Dumper $data; - if ($status) { - printf "%-30s %s\n", $chan->name, $status; - } - else { -# print $chan->name . ": $data->{value}\n"; -# print scalar @{$EpicsStore->{$chan->name}->{tme}}."\n"; - if(scalar @{$EpicsStore->{$chan->name}->{tme}} > 10) { - shift @{$EpicsStore->{$chan->name}->{tme}}; - shift @{$EpicsStore->{$chan->name}->{val}}; - } - push(@{$EpicsStore->{$chan->name}->{tme}}, $data->{stamp}); - push(@{$EpicsStore->{$chan->name}->{val}}, $data->{value}); - $EpicsValues->{$chan->name}->{tme} = $data->{stamp}; - $EpicsValues->{$chan->name}->{val} = $data->{value}; - } -} - - -sub Connect { - my ($title,$varname,$type,$wait) = @_; - # push(@EpicsChans,CA->new($name)); - # $EpicsChans[-1]->create_subscription('v', \&callback, 'DBR_TIME_DOUBLE'); - ## print $varname."\n"; - $type = 'DBR_TIME_DOUBLE' unless defined $type; - $EpicsStore->{$varname}->{tme} = []; - $EpicsStore->{$varname}->{val} = []; - $EpicsNames->{$title} = $varname; - $errcnt->{$varname} = 0; - my $success; - eval { - my $c = CA->new($varname); - CA->pend_io($wait || 0.05); - $c->create_subscription('v', \&callback, $type); -# $c->get_callback(\&callback, $type, 1); - $EpicsStore->{$varname}->{ca} = $c; - $success = $c->is_connected(); - }; - -return ($success); -} - -sub Update { - CA->pend_event($_[0]); - } - - -sub GetAll { - my $store = {}; - my $time; - my $val; - - Update(0.001); - - foreach my $el (keys %{$EpicsNames}) { - my $varname = $EpicsNames->{$el}; - my $ca = $EpicsStore->{$varname}->{ca}; - my $r = $ca->is_connected() if(defined $ca); - my $success = 1; - if(!$r && (!defined $errcnt->{$el} || $errcnt->{$el} < 20)) { - $success = Connect($el, $varname); - $errcnt->{$el}++; - } - - if(!$success) { - $time = -1; - $val = 0; - } - elsif (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - $errcnt->{$el}-=.3 if ($errcnt->{$el}||0) >= 0; - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } - else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; - } - $store->{$el}->{tme} = $time; - $store->{$el}->{val} = $val; - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; - } - - return $store; - } - - - - - -sub Get { - my ($title,$latest) = @_; - my $varname = $EpicsNames->{$title}; - my $time; - my $val; -# print $varname; - - my $c = $EpicsStore->{$varname}->{ca}; - my $r = $c->is_connected() if(defined $c); - - my $success = 1; - if(!$r) { - $success = Connect($title, $varname); - } - - if(!$success) { - return (-1, 0); - } - - - Update(0.00001); - - if (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - if(defined $latest && $latest == 1) { - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } - else { #if (scalar @{$EpicsStore->{$varname}->{tme}} > 1) - $time = shift (@{$EpicsStore->{$varname}->{tme}}); - $val = shift (@{$EpicsStore->{$varname}->{val}}); - } - } - else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; - } - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; - $time = $time || -1; - $val = $val || 0; - return ($time,$val); - } - -1; -__END__ diff --git a/hmon/Perl2Epics.pm b/hmon/Perl2Epics.pm new file mode 120000 index 0000000..d9b5423 --- /dev/null +++ b/hmon/Perl2Epics.pm @@ -0,0 +1 @@ +../nettools/Perl2Epics.pm \ No newline at end of file diff --git a/nettools/Perl2Epics.pm b/nettools/Perl2Epics.pm index c886dbd..15e6018 100644 --- a/nettools/Perl2Epics.pm +++ b/nettools/Perl2Epics.pm @@ -19,138 +19,168 @@ my $errcnt = {}; sub callback { my ($chan, $status, $data) = @_; -# print Dumper $data; + #print Dumper $data; if ($status) { - printf "%-30s %s\n", $chan->name, $status; - } + printf "%-30s %s\n", $chan->name, $status; + } else { # print $chan->name . ": $data->{value}\n"; # print scalar @{$EpicsStore->{$chan->name}->{tme}}."\n"; - if(scalar @{$EpicsStore->{$chan->name}->{tme}} > 10) { - shift @{$EpicsStore->{$chan->name}->{tme}}; - shift @{$EpicsStore->{$chan->name}->{val}}; + if(scalar @{$EpicsStore->{$chan->name}->{tme}} > 10) { + shift @{$EpicsStore->{$chan->name}->{tme}}; + shift @{$EpicsStore->{$chan->name}->{val}}; } - push(@{$EpicsStore->{$chan->name}->{tme}}, $data->{stamp}); - push(@{$EpicsStore->{$chan->name}->{val}}, $data->{value}); - $EpicsValues->{$chan->name}->{tme} = $data->{stamp}; - $EpicsValues->{$chan->name}->{val} = $data->{value}; + push(@{$EpicsStore->{$chan->name}->{tme}}, $data->{stamp}); + push(@{$EpicsStore->{$chan->name}->{val}}, $data->{value}); + $EpicsValues->{$chan->name}->{tme} = $data->{stamp}; + $EpicsValues->{$chan->name}->{val} = $data->{value}; } } sub Connect { - my ($title,$varname,$type,$wait) = @_; - # push(@EpicsChans,CA->new($name)); - # $EpicsChans[-1]->create_subscription('v', \&callback, 'DBR_TIME_DOUBLE'); - ## print $varname."\n"; - $type = 'DBR_TIME_DOUBLE' unless defined $type; - $EpicsStore->{$varname}->{tme} = []; - $EpicsStore->{$varname}->{val} = []; - $EpicsNames->{$title} = $varname; - $errcnt->{$varname} = 0; - my $success; - eval { - my $c = CA->new($varname); - CA->pend_io($wait || 0.05); - $c->create_subscription('v', \&callback, $type); + my ($title, $varname, $type, $wait) = @_; + # push(@EpicsChans,CA->new($name)); + # $EpicsChans[-1]->create_subscription('v', \&callback, 'DBR_TIME_DOUBLE'); + ## print $varname."\n"; + $type = 'DBR_TIME_DOUBLE' unless defined $type; + $EpicsStore->{$varname}->{tme} = []; + $EpicsStore->{$varname}->{val} = []; + $EpicsNames->{$title} = $varname; + $errcnt->{$varname} = 0; + my $success; + eval { + my $c = CA->new($varname); + CA->pend_io($wait || 0.05); + $c->create_subscription('v', \&callback, $type); # $c->get_callback(\&callback, $type, 1); - $EpicsStore->{$varname}->{ca} = $c; - $success = $c->is_connected(); - }; - -return ($success); + $EpicsStore->{$varname}->{ca} = $c; + $success = $c->is_connected(); + }; + #print Dumper $EpicsValues; + return ($success); } sub Update { - CA->pend_event($_[0]); - } + CA->pend_event($_[0]); +} - -sub GetAll { - my $store = {}; - my $time; - my $val; - - Update(0.001); - - foreach my $el (keys %{$EpicsNames}) { - my $varname = $EpicsNames->{$el}; - my $ca = $EpicsStore->{$varname}->{ca}; - my $r = $ca->is_connected() if(defined $ca); - my $success = 1; - if(!$r && (!defined $errcnt->{$el} || $errcnt->{$el} < 20)) { - $success = Connect($el, $varname); - $errcnt->{$el}++; - } - if(!$success) { - $time = -1; - $val = 0; - } - elsif (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - $errcnt->{$el}-=.3 if ($errcnt->{$el}||0) >= 0; - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } - else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; - } - $store->{$el}->{tme} = $time; - $store->{$el}->{val} = $val; - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; +sub GetAll { + my $store = {}; + my $time; + my $val; + + Update(0.001); + + foreach my $el (keys %{$EpicsNames}) { + my $varname = $EpicsNames->{$el}; + my $ca = $EpicsStore->{$varname}->{ca}; + my $r = $ca->is_connected() if(defined $ca); + my $success = 1; + if(!$r && (!defined $errcnt->{$el} || $errcnt->{$el} < 20)) { + $success = Connect($el, $varname); + $errcnt->{$el}++; + } + + if(!$success) { + $time = -1; + $val = 0; + } elsif (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { + $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; + $val = (@{$EpicsStore->{$varname}->{val}})[-1]; + } else { + $time = $EpicsStore->{$varname}->{lasttime}; + $val = $EpicsStore->{$varname}->{lastval}; + } + $store->{$el}->{tme} = $time; + $store->{$el}->{val} = $val; + $EpicsStore->{$varname}->{lasttime} = $time; + $EpicsStore->{$varname}->{lastval} = $val; } + + return $store; +} - return $store; - } - - - - - sub Get { - my ($title,$latest) = @_; - my $varname = $EpicsNames->{$title}; - my $time; - my $val; + my ($title,$latest) = @_; + my $varname = $EpicsNames->{$title}; + my $time; + my $val; # print $varname; - my $c = $EpicsStore->{$varname}->{ca}; - my $r = $c->is_connected() if(defined $c); - - my $success = 1; - if(!$r) { - $success = Connect($title, $varname); - } + my $c = $EpicsStore->{$varname}->{ca}; + my $r = $c->is_connected() if(defined $c); - if(!$success) { - return (-1, 0); - } + my $success = 1; + if(!$r) { + $success = Connect($title, $varname); + } + if(!$success) { + return (-1, 0); + } - Update(0.00001); + Update(0.00001); + + if (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { + if(defined $latest && $latest == 1) { + $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; + $val = (@{$EpicsStore->{$varname}->{val}})[-1]; + } + else { #if (scalar @{$EpicsStore->{$varname}->{tme}} > 1) + $time = shift (@{$EpicsStore->{$varname}->{tme}}); + $val = shift (@{$EpicsStore->{$varname}->{val}}); + } + } + else { + $time = $EpicsStore->{$varname}->{lasttime}; + $val = $EpicsStore->{$varname}->{lastval}; + } + $EpicsStore->{$varname}->{lasttime} = $time; + $EpicsStore->{$varname}->{lastval} = $val; + $time = $time || -1; + $val = $val || 0; + return ($time,$val); +} - if (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - if(defined $latest && $latest == 1) { - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } - else { #if (scalar @{$EpicsStore->{$varname}->{tme}} > 1) - $time = shift (@{$EpicsStore->{$varname}->{tme}}); - $val = shift (@{$EpicsStore->{$varname}->{val}}); - } +sub Put { + my ($title, $value) = @_; + my $varname = $EpicsNames->{$title}; + if (!defined $varname) { + return -1; } - else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; + + my $c = $EpicsStore->{$varname}->{ca}; + my $r = $c->is_connected() if(defined $c); + + my $success = 1; + if(!$r) { + $success = Connect($title, $varname); } - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; - $time = $time || -1; - $val = $val || 0; - return ($time,$val); - } + + if(!$success) { + return -2; + } + + if (($c->element_count()) != 1) { + print "5\n"; + return -3; + } + + my $type = $c->field_type; + my @values; + if ($type !~ m/ ^DBR_STRING$ | ^DBR_ENUM$ /x) { + # Make @ARGV strings numeric + push (@values, (map { +$_; } $value)); + } else { + # Use strings + push (@values, $value); + } + $c->put(@values); + + return 0; +} 1; __END__ diff --git a/richhv/Perl2Epics.pm b/richhv/Perl2Epics.pm deleted file mode 100644 index 15e6018..0000000 --- a/richhv/Perl2Epics.pm +++ /dev/null @@ -1,186 +0,0 @@ -package Perl2Epics; -use warnings; -use strict; -use Data::Dumper; -# use Hmon; - -use lib '/home/scs/EPICS/gcc-4.4/EPICS-3.14.12.2_linux-x86_64/base/' . '/lib/perl'; -use CA; - -$ENV{EPICS_CA_AUTO_ADDR_LIST} = 'YES'; -$ENV{EPICS_CA_ADDR_LIST} = "192.168.100.11 192.168.100.12 192.168.100.13 192.168.100.14 192.168.100.15 localhost"; - - -my $EpicsValues = {}; -my $EpicsStore = {}; -my @EpicsChans = (); -my $EpicsNames = {}; -my $errcnt = {}; - -sub callback { - my ($chan, $status, $data) = @_; - #print Dumper $data; - if ($status) { - printf "%-30s %s\n", $chan->name, $status; - } - else { -# print $chan->name . ": $data->{value}\n"; -# print scalar @{$EpicsStore->{$chan->name}->{tme}}."\n"; - if(scalar @{$EpicsStore->{$chan->name}->{tme}} > 10) { - shift @{$EpicsStore->{$chan->name}->{tme}}; - shift @{$EpicsStore->{$chan->name}->{val}}; - } - push(@{$EpicsStore->{$chan->name}->{tme}}, $data->{stamp}); - push(@{$EpicsStore->{$chan->name}->{val}}, $data->{value}); - $EpicsValues->{$chan->name}->{tme} = $data->{stamp}; - $EpicsValues->{$chan->name}->{val} = $data->{value}; - } -} - - -sub Connect { - my ($title, $varname, $type, $wait) = @_; - # push(@EpicsChans,CA->new($name)); - # $EpicsChans[-1]->create_subscription('v', \&callback, 'DBR_TIME_DOUBLE'); - ## print $varname."\n"; - $type = 'DBR_TIME_DOUBLE' unless defined $type; - $EpicsStore->{$varname}->{tme} = []; - $EpicsStore->{$varname}->{val} = []; - $EpicsNames->{$title} = $varname; - $errcnt->{$varname} = 0; - my $success; - eval { - my $c = CA->new($varname); - CA->pend_io($wait || 0.05); - $c->create_subscription('v', \&callback, $type); -# $c->get_callback(\&callback, $type, 1); - $EpicsStore->{$varname}->{ca} = $c; - $success = $c->is_connected(); - }; - #print Dumper $EpicsValues; - return ($success); -} - -sub Update { - CA->pend_event($_[0]); -} - - -sub GetAll { - my $store = {}; - my $time; - my $val; - - Update(0.001); - - foreach my $el (keys %{$EpicsNames}) { - my $varname = $EpicsNames->{$el}; - my $ca = $EpicsStore->{$varname}->{ca}; - my $r = $ca->is_connected() if(defined $ca); - my $success = 1; - if(!$r && (!defined $errcnt->{$el} || $errcnt->{$el} < 20)) { - $success = Connect($el, $varname); - $errcnt->{$el}++; - } - - if(!$success) { - $time = -1; - $val = 0; - } elsif (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; - } - $store->{$el}->{tme} = $time; - $store->{$el}->{val} = $val; - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; - } - - return $store; -} - -sub Get { - my ($title,$latest) = @_; - my $varname = $EpicsNames->{$title}; - my $time; - my $val; -# print $varname; - - my $c = $EpicsStore->{$varname}->{ca}; - my $r = $c->is_connected() if(defined $c); - - my $success = 1; - if(!$r) { - $success = Connect($title, $varname); - } - - if(!$success) { - return (-1, 0); - } - - Update(0.00001); - - if (scalar @{$EpicsStore->{$varname}->{tme}} > 0) { - if(defined $latest && $latest == 1) { - $time = (@{$EpicsStore->{$varname}->{tme}})[-1]; - $val = (@{$EpicsStore->{$varname}->{val}})[-1]; - } - else { #if (scalar @{$EpicsStore->{$varname}->{tme}} > 1) - $time = shift (@{$EpicsStore->{$varname}->{tme}}); - $val = shift (@{$EpicsStore->{$varname}->{val}}); - } - } - else { - $time = $EpicsStore->{$varname}->{lasttime}; - $val = $EpicsStore->{$varname}->{lastval}; - } - $EpicsStore->{$varname}->{lasttime} = $time; - $EpicsStore->{$varname}->{lastval} = $val; - $time = $time || -1; - $val = $val || 0; - return ($time,$val); -} - -sub Put { - my ($title, $value) = @_; - my $varname = $EpicsNames->{$title}; - if (!defined $varname) { - return -1; - } - - my $c = $EpicsStore->{$varname}->{ca}; - my $r = $c->is_connected() if(defined $c); - - my $success = 1; - if(!$r) { - $success = Connect($title, $varname); - } - - if(!$success) { - return -2; - } - - if (($c->element_count()) != 1) { - print "5\n"; - return -3; - } - - my $type = $c->field_type; - my @values; - if ($type !~ m/ ^DBR_STRING$ | ^DBR_ENUM$ /x) { - # Make @ARGV strings numeric - push (@values, (map { +$_; } $value)); - } else { - # Use strings - push (@values, $value); - } - $c->put(@values); - - return 0; -} - -1; -__END__ diff --git a/richhv/Perl2Epics.pm b/richhv/Perl2Epics.pm new file mode 120000 index 0000000..2efb43a --- /dev/null +++ b/richhv/Perl2Epics.pm @@ -0,0 +1 @@ +../hmon/Perl2Epics.pm \ No newline at end of file