server_init now calls ::counter::isc_initialize, ::histogram_memory::isc_initialize and ::scan::isc_initialize scan.c SICS-158 Restrict bmonscan and hmscan to only one scan variable count_common.tcl Create a mulicounter which uses the available monitors as channels. The multicounter is used in bmonscans hipadaba_configuration_common.tcl Use _link as the suffix for the nxvgroup name when making nexus file links. hmm_configuration_common.tcl SICS-190 Create hdb entries for bm_counts, bm_event_rate, bm_status SICS-164 Allow running histmem in simulated mode. hmm_cylindrical_detector_configuration.tcl Only refer to detector SICSVariables when necessary, otherwise we get dependency problems. nxscripts_common_1.tcl Separate histmem_filtype_spec from bmon_filetype_spec so that we can use the histem_filetyp_spec names to restrict the histmem scan filetypes. Close the data file on error in proc ::nexus::save Allow int and text types when saving macro data scan_common_1.tcl SICS-173 Allow users to force a scan when the instrument isn't ready Added ic_initialize proc so we can make dependencies explicit in the init_server proc SICS-186 Allow monitor modes for histmem scans Allow selection of histmem file policies from runscan command echidna, wombat, kowari, quokka and platypus component and server configurations Added instrument specific configuration initialisation functions in the component configuration files. Add a catch block to the top-level instrument server configuration file and printout the errorContext and callStack r2641 | ffr | 2008-07-01 17:02:26 +1000 (Tue, 01 Jul 2008) | 34 lines
59 lines
1.7 KiB
Tcl
59 lines
1.7 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 "123.4 10 20 30 40 50 60 70 80"
|
|
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::transfer_script 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 "
|
|
}
|
|
eval "MakeMultiCounter bm $bm_list"
|
|
} 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] ]
|
|
}
|
|
}
|
|
bm transferscript ::counter::transferscript
|
|
bm SetExponent 0
|
|
sicslist setatt bm privilege internal
|
|
} message ] {
|
|
if {$::errorCode=="NONE"} {return $message}
|
|
return -code error $message
|
|
}
|
|
}
|
|
|
|
|
|
::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
|
|
|