From 0e348f7750926034fe46889f3dbfce82f83766cf Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Mon, 12 Mar 2007 08:55:45 +1100 Subject: [PATCH] Refactoring: Added init{} and hpath_setp{} to be called by hipadaba module to initialise variables and setup hpaths. Transformed nxaddpoint and bm_nxaddpoint to a generic write_nxentry which will be used by scan specific write commands. r1626 | ffr | 2007-03-12 08:55:45 +1100 (Mon, 12 Mar 2007) | 4 lines --- .../instrument/config/scan/scan_common_1.tcl | 125 +++++++++++------- 1 file changed, 76 insertions(+), 49 deletions(-) diff --git a/site_ansto/instrument/config/scan/scan_common_1.tcl b/site_ansto/instrument/config/scan/scan_common_1.tcl index c0e1ab40..d5dcf033 100644 --- a/site_ansto/instrument/config/scan/scan_common_1.tcl +++ b/site_ansto/instrument/config/scan/scan_common_1.tcl @@ -1,6 +1,8 @@ #TODO Define bmon and hmm scan commands in separate namespaces -namespace eval scanCommand { +namespace eval scancommand { +VarMake bmonscan_np Int User +VarMake bmonscan_point Int User variable scanVariable scan_var scanVarStart 0 scanVarStep 1 proc scan_prepare {sobj uobj} { @@ -15,24 +17,24 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]]; set scanVarStart [lindex $vlist 1]; set scanVarStep [lindex $vlist 2]; - hs_prepare $sobj $uobj + ::histogram_memory::hs_prepare $sobj $uobj } - proc scan_count {sobj uobj point mode preset} { + proc hm_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; + ::histogram_memory::hs_count_bm_controlled $sobj $uobj $point $mode $preset; } proc hm_scan_finish {sobj uobj} { - hs_finish $sobj $uobj; + ::histogram_memory::hs_finish $sobj $uobj; nxreopenfile; nxclosefile; } proc bm_scan_finish {sobj uobj} { - stdscan finish $sobj $uobj; +# stdscan finish $sobj $uobj; nxreopenfile; nxclosefile; } @@ -41,16 +43,24 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 #} # Add an nxentry for the current scan point - proc nxaddpoint {sobj uobj pt} { + proc write_nxentry {nxentryCmd point} { variable scanVarStart; variable scanVarStep; variable scanVariable; variable scan_pt_start_time; - set scanVarPos [expr $scanVarStart + $pt * $scanVarStep]; + set scanVarPos [expr {$scanVarStart + $point * $scanVarStep} ]; nxreopenfile; - addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time; - nxclosefile + $nxentryCmd nxscript scan_[format "%05d" $point] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time; + nxclosefile; + } + + proc bm_writepoint {sobj uobj pt} { + write_nxentry bm_addnxscanentry $pt; + } + + proc hm_writepoint {sobj uobj pt} { + write_nxentry addnxscanentry $pt; } proc donothing {args} {} @@ -58,9 +68,11 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 proc bmcount {sobj uobj pt mode preset} { variable scan_pt_start_time set scan_pt_start_time [sicstime] + bmonscan_point $pt bm setmode $mode - bm count $preset; + bm count $preset; } + proc bm_scan_prepare {sobj uobj} { variable scanVarStart; variable scanVarStep; @@ -71,50 +83,74 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]]; set scanVarStart [lindex $vlist 1]; set scanVarStep [lindex $vlist 2]; - stdscan prepare $sobj $uobj; + #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 + proc init {} { +#TODO HSET bmonscan_np IN SCAN FUNCTION + bmonscan_np 1; + bmonscan_point 0; + } + + proc hpath_setup {parent} { + hmake $parent/beam_monitor_scan spy none; + hsetprop $parent/beam_monitor_scan type graphdata; + hsetprop $parent/beam_monitor_scan viewer default; + hsetprop $parent/beam_monitor_scan rank 1; + hattach $parent/beam_monitor_scan bmonscan_np dim; + hattach $parent/beam_monitor_scan bmonscan_point point; } } -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::write_nxentry user +publish ::scancommand::hm_count user +publish ::scancommand::scan_prepare user +publish ::scancommand::hm_scan_finish user +publish ::scancommand::hm_writepoint 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 +publish ::scancommand::bm_scan_prepare user +publish ::scancommand::bm_scan_finish user +publish ::scancommand::bm_writepoint user +publish ::scancommand::bmcount user -#scan2 function writeheader ::scanCommand::donothing -#scan2 function writepoint ::scanCommand::nxaddpoint -#scan2 function prepare ::scanCommand::scan_prepare +MakeScanCommand bmonscan bm $cfPath(scan)/scan_common_1.hdd recover.bin +bmonscan configure script +bmonscan function writeheader ::scancommand::donothing +bmonscan function writepoint ::scancommand::bm_writepoint +bmonscan function count ::scancommand::bmcount +bmonscan function prepare ::scancommand::bm_scan_prepare +bmonscan function finish ::scancommand::bm_scan_finish + +#scan2 function writeheader ::scancommand::donothing +#scan2 function writepoint ::scancommand::nxaddpoint +#scan2 function prepare ::scancommand::scan_prepare +# Configure script mode, then we can configure all the scan callbacks. +# The scan list command can be used to check that the callbacks +# are properly defined. +# A different count callback is defined in the two cases. +# +MakeScanCommand hmscan bm $cfPath(scan)/scan_common_1.hdd recover.bin hmscan configure script +#hmscan function prepare hs_prepare +MakeScanCommand scan2 bm $cfPath(scan)/scan_common_1.hdd recover.bin +scan2 configure script +# +# That's all, folks... + #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 - +hmscan function writeheader ::scancommand::donothing +hmscan function writepoint ::scancommand::hm_writepoint +hmscan function count ::scancommand::hm_count +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 configure script hmscan add $scanvar $scanstart $scanincr set status [catch {hmscan run $np $mode $preset} msg] @@ -128,12 +164,3 @@ proc hdb_hmscan {scanvar scanstart scanincr np mode preset} { 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 - -