From b9731fc0acafbdad7ae75d799d3985926a7269fc Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Tue, 13 Mar 2007 16:43:45 +1100 Subject: [PATCH] Provide bmonscan graphics view and command feedback. r1643 | ffr | 2007-03-13 16:43:45 +1100 (Tue, 13 Mar 2007) | 2 lines --- .../instrument/config/scan/scan_common_1.tcl | 72 ++++++++++++++++--- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/site_ansto/instrument/config/scan/scan_common_1.tcl b/site_ansto/instrument/config/scan/scan_common_1.tcl index c4ddc0d4..0f614f4e 100644 --- a/site_ansto/instrument/config/scan/scan_common_1.tcl +++ b/site_ansto/instrument/config/scan/scan_common_1.tcl @@ -1,6 +1,15 @@ #TODO Define bmon and hmm scan commands in separate namespaces namespace eval scancommand { +# List of counts +variable bmoncounts_array +variable bmoncounts_axis + +variable bmonscanvar_axis_hpath +# hpath to values from bmoncounts_array +# we use this to get auto-notification on update of bmonscancounts_array_hpath +variable bmonscancounts_array_hpath + VarMake bmonscan_var_name Text User VarMake bmonscan_var_value Float User VarMake bmonscan_var_start Float User @@ -9,6 +18,7 @@ VarMake bmonscan_mode Text User VarMake bmonscan_preset Float User VarMake bmonscan_np_target Int User VarMake bmonscan_point_current Int User +VarMake bmonscan_counts Int User VarMake hmscan_var_name Text User VarMake hmscan_var_value Float User @@ -81,9 +91,14 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 } proc bm_writepoint {sobj uobj pt} { + variable bmoncounts_array + set counts [SplitReply [bm getcounts]] + bmonscan_counts $counts + lappend bmoncounts_array $counts write_nxentry bm_addnxscanentry $pt; } +#TODO Feedback for Histogram memory scan proc hm_writepoint {sobj uobj pt} { write_nxentry addnxscanentry $pt; } @@ -92,6 +107,7 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 proc bmcount {sobj uobj point mode preset} { variable scan_pt_start_time + set scan_pt_start_time [sicstime] bmonscan_point_current $point bmonscan_mode $mode; @@ -106,13 +122,22 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 variable scanVarStart; variable scanVarStep; variable scanVariable; + variable bmoncounts_array; + variable bmoncounts_axis; + + set bmoncounts_array [list] +#TODO Parameterise varindex in some way + set varindex 0; + nxcreatefile nexus_bmonscan.dic; nxclosefile; bmonscan_np_target [SplitReply [$sobj np]]; - set vlist [split [$sobj getvarpar 0] = ]; + set vlist [split [$sobj getvarpar $varindex] = ]; set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]]; set scanVarStart [lindex $vlist 1]; set scanVarStep [lindex $vlist 2]; + set scanvar_pts [SplitReply [$sobj getvardata $varindex]] + set bmoncounts_axis [string map {\{ "" \} ""} $scanvar_pts] bmonscan_var_name $scanVariable bmonscan_var_start $scanVarStart bmonscan_var_step $scanVarStep @@ -122,10 +147,15 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 proc init {} { #TODO HSET bmonscan_np_target IN SCAN FUNCTION - bmonscan_np_target 1; + variable bmoncounts_array + variable bmoncounts_axis + + bmonscan_np_target 0; bmonscan_point_current 0; - hmscan_np_target 1; + hmscan_np_target 0; hmscan_point_current 0; + set bmoncounts_array [list]; + set bmoncounts_axis [list]; } proc commands_hpath_setup {parent} { @@ -161,23 +191,45 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1 hattach $parent/bmonscan/feedback/scan_variable bmonscan_var_value value hmake $parent/bmonscan/feedback/NP spy none hattach $parent/bmonscan/feedback/NP bmonscan_point_current current + hattach $parent/bmonscan/feedback bmonscan_counts counts; +#TODO Histogram memory scan command } + proc graphics_hpath_setup {parent} { + variable bmonscanvar_axis_hpath + variable bmonscancounts_array_hpath + variable bmoncounts_array + variable bmoncounts_axis + + set bmonscanvar_axis_hpath $parent/beam_monitor_scan/scan_axis + set bmonscancounts_array_hpath $parent/beam_monitor_scan/counts + set defdim 100 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_target dim; hattach $parent/beam_monitor_scan bmonscan_point_current point; + hmake $parent/beam_monitor_scan/scan_variable spy none + hattach $parent/beam_monitor_scan/scan_variable bmonscan_var_value value + hmake $parent/beam_monitor_scan/scan_counts spy none + hattach $parent/beam_monitor_scan/scan_counts bmonscan_counts value + hmakescript $bmonscanvar_axis_hpath "set ::scancommand::bmoncounts_axis" hdbReadOnly floatvarar $defdim + hsetprop $bmonscanvar_axis_hpath type axis + sicspoll del $bmonscanvar_axis_hpath + hmakescript $bmonscancounts_array_hpath "set ::scancommand::bmoncounts_array" hdbReadOnly floatvarar $defdim + hsetprop $bmonscancounts_array_hpath type data + sicspoll del $bmonscancounts_array_hpath - hmake $parent/histogram_memory_scan spy none; - hsetprop $parent/histogram_memory_scan type graphdata; - hsetprop $parent/histogram_memory_scan viewer default; - hsetprop $parent/histogram_memory_scan rank 2; - hattach $parent/histogram_memory_scan hmscan_np_target dim0; - hattach $parent/histogram_memory_scan hmscan_np_target dim1; - hattach $parent/histogram_memory_scan hmscan_point_current point; +#TODO histogram_memory_scan +# hmake $parent/histogram_memory_scan spy none; +# hsetprop $parent/histogram_memory_scan type graphdata; +# hsetprop $parent/histogram_memory_scan viewer default; +# hsetprop $parent/histogram_memory_scan rank 2; +# hattach $parent/histogram_memory_scan hmscan_np_target dim0; +# hattach $parent/histogram_memory_scan hmscan_np_target dim1; +# hattach $parent/histogram_memory_scan hmscan_point_current point; } }