Files
sics/site_ansto/instrument/config/counter/counter_common_1.tcl
Ferdi Franceschini a2a9eb6f72 Fixed typo. Although this didn't seem to cause any problems.
r3623 | ffr | 2012-06-29 16:05:50 +1000 (Fri, 29 Jun 2012) | 2 lines
2012-11-15 17:31:48 +11:00

99 lines
3.2 KiB
Tcl

namespace eval counter {
variable isc_numchannels
variable isc_monitor_address
variable isc_portlist
variable isc_beam_monitor_list
}
proc ::counter::transferscript {} {
variable isc_numchannels
set val [SplitReply [bm1 gettime]]
for {set i 1} {$i <= $isc_numchannels} {incr i} {
append val " [SplitReply [bm$i getcounts] ]"
}
# broadcast $val
return $val
}
publish ::counter::transferscript user
proc ::counter::ic_initialize {} {
if [ catch {
variable isc_numchannels
variable isc_monitor_address
variable isc_portlist
variable isc_beam_monitor_list
set sim_mode [SplitReply [counter_simulation]]
if {$sim_mode == "true"} {
# MakeCounter bm SIM 0.0;
for {set n 1} {$n <= $isc_numchannels} {incr n} {
MakeCounter bm$n SIM 0.0
append bm_list "bm$n "
}
} else {
# Make and configure an ANSTO beam monitor counter.
# This must be sourced before the hmm_configuration.tcl until we separate the scan setup from the hmm setup
for {set i 0; set n 1} {$i < $isc_numchannels} {incr i; incr n} {
MakeCounter bm$n anstomonitor [ params host $isc_monitor_address port [lindex $isc_portlist $i] ]
append bm_list "bm$n "
}
}
eval "MakeMultiCounter bm $bm_list"
bm transferscript ::counter::transferscript
bm SetExponent 0
sicslist setatt bm privilege internal
::utility::macro::getset text bm_mode {} {
return [bm getmode]
}
sicslist setatt bm_mode klass monitor
sicslist setatt bm_mode long_name mode
sicslist setatt bm_mode mutable false
::utility::macro::getset float bm_preset {} {
return [bm getpreset]
}
sicslist setatt bm_preset klass monitor
sicslist setatt bm_preset long_name preset
sicslist setatt bm_preset mutable false
::utility::macro::getset float monitor_counts {} {
return "monitor_counts = [SplitReply [bm getcounts]]"
}
sicslist setatt monitor_counts klass monitor
sicslist setatt monitor_counts long_name data
sicslist setatt monitor_counts mutable true
::utility::macro::getset float monitor_time {} {
return "monitor_time = [SplitReply [bm gettime]]"
}
sicslist setatt monitor_time klass monitor
sicslist setatt monitor_time long_name time
sicslist setatt monitor_time mutable true
for {set bm_num 1} {$bm_num <= $isc_numchannels} {incr bm_num} {
set bm_counts bm${bm_num}_counts
set bmon bm${bm_num}
::utility::macro::getset int $bm_counts {} [subst -nocommands {
return "[$bmon getcounts]"
}]
sicslist setatt $bm_counts klass monitor
sicslist setatt $bm_counts long_name $bm_counts
sicslist setatt $bm_counts mutable true
set bm_time bm${bm_num}_time
set bmon bm${bm_num}
::utility::macro::getset float $bm_time {} [subst -nocommands {
return "[$bmon gettime]"
}]
sicslist setatt $bm_time klass monitor
sicslist setatt $bm_time long_name $bm_time
sicslist setatt $bm_time mutable true
}
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}