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
This commit is contained in:
committed by
Douglas Clowes
parent
4037d5ca4d
commit
0e348f7750
@@ -1,6 +1,8 @@
|
|||||||
#TODO Define bmon and hmm scan commands in separate namespaces
|
#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
|
variable scanVariable scan_var scanVarStart 0 scanVarStep 1
|
||||||
proc scan_prepare {sobj uobj} {
|
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 scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
|
||||||
set scanVarStart [lindex $vlist 1];
|
set scanVarStart [lindex $vlist 1];
|
||||||
set scanVarStep [lindex $vlist 2];
|
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
|
variable scan_pt_start_time
|
||||||
set scan_pt_start_time [sicstime]
|
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} {
|
proc hm_scan_finish {sobj uobj} {
|
||||||
hs_finish $sobj $uobj;
|
::histogram_memory::hs_finish $sobj $uobj;
|
||||||
nxreopenfile;
|
nxreopenfile;
|
||||||
nxclosefile;
|
nxclosefile;
|
||||||
}
|
}
|
||||||
|
|
||||||
proc bm_scan_finish {sobj uobj} {
|
proc bm_scan_finish {sobj uobj} {
|
||||||
stdscan finish $sobj $uobj;
|
# stdscan finish $sobj $uobj;
|
||||||
nxreopenfile;
|
nxreopenfile;
|
||||||
nxclosefile;
|
nxclosefile;
|
||||||
}
|
}
|
||||||
@@ -41,16 +43,24 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
|
|||||||
#}
|
#}
|
||||||
|
|
||||||
# Add an nxentry for the current scan point
|
# Add an nxentry for the current scan point
|
||||||
proc nxaddpoint {sobj uobj pt} {
|
proc write_nxentry {nxentryCmd point} {
|
||||||
variable scanVarStart;
|
variable scanVarStart;
|
||||||
variable scanVarStep;
|
variable scanVarStep;
|
||||||
variable scanVariable;
|
variable scanVariable;
|
||||||
variable scan_pt_start_time;
|
variable scan_pt_start_time;
|
||||||
|
|
||||||
set scanVarPos [expr $scanVarStart + $pt * $scanVarStep];
|
set scanVarPos [expr {$scanVarStart + $point * $scanVarStep} ];
|
||||||
nxreopenfile;
|
nxreopenfile;
|
||||||
addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
$nxentryCmd nxscript scan_[format "%05d" $point] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
||||||
nxclosefile
|
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} {}
|
proc donothing {args} {}
|
||||||
@@ -58,9 +68,11 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
|
|||||||
proc bmcount {sobj uobj pt mode preset} {
|
proc bmcount {sobj uobj pt mode preset} {
|
||||||
variable scan_pt_start_time
|
variable scan_pt_start_time
|
||||||
set scan_pt_start_time [sicstime]
|
set scan_pt_start_time [sicstime]
|
||||||
|
bmonscan_point $pt
|
||||||
bm setmode $mode
|
bm setmode $mode
|
||||||
bm count $preset;
|
bm count $preset;
|
||||||
}
|
}
|
||||||
|
|
||||||
proc bm_scan_prepare {sobj uobj} {
|
proc bm_scan_prepare {sobj uobj} {
|
||||||
variable scanVarStart;
|
variable scanVarStart;
|
||||||
variable scanVarStep;
|
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 scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
|
||||||
set scanVarStart [lindex $vlist 1];
|
set scanVarStart [lindex $vlist 1];
|
||||||
set scanVarStep [lindex $vlist 2];
|
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];
|
proc init {} {
|
||||||
nxreopenfile;
|
#TODO HSET bmonscan_np IN SCAN FUNCTION
|
||||||
bm_addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
bmonscan_np 1;
|
||||||
nxclosefile
|
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::write_nxentry user
|
||||||
publish ::scanCommand::scan_prepare user
|
publish ::scancommand::hm_count user
|
||||||
publish ::scanCommand::hm_scan_finish user
|
publish ::scancommand::scan_prepare user
|
||||||
publish ::scanCommand::nxaddpoint user
|
publish ::scancommand::hm_scan_finish user
|
||||||
publish ::scanCommand::donothing user
|
publish ::scancommand::hm_writepoint user
|
||||||
|
publish ::scancommand::donothing user
|
||||||
|
|
||||||
publish ::scanCommand::bm_scan_prepare user
|
publish ::scancommand::bm_scan_prepare user
|
||||||
publish ::scanCommand::bm_scan_finish user
|
publish ::scancommand::bm_scan_finish user
|
||||||
publish ::scanCommand::bm_nxaddpoint user
|
publish ::scancommand::bm_writepoint user
|
||||||
publish ::scanCommand::bmcount user
|
publish ::scancommand::bmcount user
|
||||||
|
|
||||||
#scan2 function writeheader ::scanCommand::donothing
|
MakeScanCommand bmonscan bm $cfPath(scan)/scan_common_1.hdd recover.bin
|
||||||
#scan2 function writepoint ::scanCommand::nxaddpoint
|
bmonscan configure script
|
||||||
#scan2 function prepare ::scanCommand::scan_prepare
|
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 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 prepare hdbprepare
|
||||||
#hmscan function collect hdbcollect
|
#hmscan function collect hdbcollect
|
||||||
hmscan function writeheader ::scanCommand::donothing
|
hmscan function writeheader ::scancommand::donothing
|
||||||
hmscan function count ::scanCommand::scan_count
|
hmscan function writepoint ::scancommand::hm_writepoint
|
||||||
hmscan function writepoint ::scanCommand::nxaddpoint
|
hmscan function count ::scancommand::hm_count
|
||||||
hmscan function prepare ::scanCommand::scan_prepare
|
hmscan function prepare ::scancommand::scan_prepare
|
||||||
hmscan function finish ::scanCommand::hm_scan_finish
|
hmscan function finish ::scancommand::hm_scan_finish
|
||||||
|
|
||||||
# Wombat proc hdb_hmscan {scanvar scanstart scanincr scanend mode preset} {
|
# Wombat proc hdb_hmscan {scanvar scanstart scanincr scanend mode preset} {
|
||||||
proc hdb_hmscan {scanvar scanstart scanincr np mode preset} {
|
proc hdb_hmscan {scanvar scanstart scanincr np mode preset} {
|
||||||
hmscan clear
|
hmscan clear
|
||||||
hmscan configure script
|
# hmscan configure script
|
||||||
|
|
||||||
hmscan add $scanvar $scanstart $scanincr
|
hmscan add $scanvar $scanstart $scanincr
|
||||||
set status [catch {hmscan run $np $mode $preset} msg]
|
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
|
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user