Files
sics/site_ansto/instrument/config/scan/scan_common_1.tcl
Ferdi Franceschini 0ac4cbaa94 Common instrument configuration files.
r1585 | ffr | 2007-03-05 16:34:13 +1100 (Mon, 05 Mar 2007) | 2 lines
2012-11-15 13:03:37 +11:00

140 lines
4.0 KiB
Tcl

#TODO Define bmon and hmm scan commands in separate namespaces
namespace eval scanCommand {
variable scanVariable scan_var scanVarStart 0 scanVarStep 1
proc scan_prepare {sobj uobj} {
variable scanVarStart;
variable scanVarStep;
variable scanVariable;
nxcreatefile nexus_hmscan.dic;
nxclosefile;
# stdscan prepare $sobj $uobj;
set vlist [split [$sobj getvarpar 0] = ];
set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
set scanVarStart [lindex $vlist 1];
set scanVarStep [lindex $vlist 2];
hs_prepare $sobj $uobj
}
proc scan_count {sobj uobj point mode preset} {
variable scan_pt_start_time
set scan_pt_start_time [sicstime]
hs_count_bm_controlled $sobj $uobj $point $mode $preset;
}
proc hm_scan_finish {sobj uobj} {
hs_finish $sobj $uobj;
nxreopenfile;
nxclosefile;
}
proc bm_scan_finish {sobj uobj} {
stdscan finish $sobj $uobj;
nxreopenfile;
nxclosefile;
}
#proc hm_scan_finish {sobj uobj} {
# nxclosefile;
#}
# Add an nxentry for the current scan point
proc nxaddpoint {sobj uobj pt} {
variable scanVarStart;
variable scanVarStep;
variable scanVariable;
variable scan_pt_start_time;
set scanVarPos [expr $scanVarStart + $pt * $scanVarStep];
nxreopenfile;
addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
nxclosefile
}
proc donothing {args} {}
proc bmcount {sobj uobj pt mode preset} {
variable scan_pt_start_time
set scan_pt_start_time [sicstime]
bm setmode $mode
bm count $preset;
}
proc bm_scan_prepare {sobj uobj} {
variable scanVarStart;
variable scanVarStep;
variable scanVariable;
nxcreatefile nexus_bmonscan.dic;
nxclosefile;
set vlist [split [$sobj getvarpar 0] = ];
set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
set scanVarStart [lindex $vlist 1];
set scanVarStep [lindex $vlist 2];
stdscan prepare $sobj $uobj;
}
proc bm_nxaddpoint {sobj uobj pt} {
variable scanVarStart;
variable scanVarStep;
variable scanVariable;
variable scan_pt_start_time;
set scanVarPos [expr $scanVarStart + $pt * $scanVarStep];
nxreopenfile;
bm_addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
nxclosefile
}
}
publish ::scanCommand::scan_count user
publish ::scanCommand::scan_prepare user
publish ::scanCommand::hm_scan_finish user
publish ::scanCommand::nxaddpoint user
publish ::scanCommand::donothing user
publish ::scanCommand::bm_scan_prepare user
publish ::scanCommand::bm_scan_finish user
publish ::scanCommand::bm_nxaddpoint user
publish ::scanCommand::bmcount user
#scan2 function writeheader ::scanCommand::donothing
#scan2 function writepoint ::scanCommand::nxaddpoint
#scan2 function prepare ::scanCommand::scan_prepare
hmscan configure script
#hmscan function prepare hdbprepare
#hmscan function collect hdbcollect
hmscan function writeheader ::scanCommand::donothing
hmscan function count ::scanCommand::scan_count
hmscan function writepoint ::scanCommand::nxaddpoint
hmscan function prepare ::scanCommand::scan_prepare
hmscan function finish ::scanCommand::hm_scan_finish
# Wombat proc hdb_hmscan {scanvar scanstart scanincr scanend mode preset} {
proc hdb_hmscan {scanvar scanstart scanincr np mode preset} {
hmscan clear
hmscan configure script
hmscan add $scanvar $scanstart $scanincr
set status [catch {hmscan run $np $mode $preset} msg]
hmscan configure soft
if {$status == 0} {
return $msg
} else {
error $msg
}
}
publish hdb_hmscan user
MakeScanCommand bmonscan bm $cfPath(scan)/scan_common_1.hdd recover.bin
bmonscan configure script
bmonscan function writeheader ::scanCommand::donothing
bmonscan function writepoint ::scanCommand::bm_nxaddpoint
bmonscan function prepare ::scanCommand::bm_scan_prepare
bmonscan function count ::scanCommand::bmcount
bmonscan function finish ::scanCommand::bm_scan_finish