--- /dev/null
+hmon/qa
+hmon/logs
+hmon/vertex
#!/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
-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
source /home/hadaq/.bash_profile
echo \" <Startup> Connected to lxhadesdaq...\"
echo \" <Startup> Starting DAQ with default settings...\"
- cd /home/hadaq/trbsoft/daq/main/
+ cd /home/hadaq/trbsoft/hadesdaq/main/
time bash ./startup_briccolage.sh
sleep 10
"
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
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
'
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
'
"
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
'
"
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 '--'
'
"
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
'
"
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
'
"
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
'
"
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
'
"
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
'
"
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
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
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
'
"
# 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
#"
+++ /dev/null
-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__
--- /dev/null
+../nettools/Perl2Epics.pm
\ No newline at end of file
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__
+++ /dev/null
-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__
--- /dev/null
+../hmon/Perl2Epics.pm
\ No newline at end of file