97 lines
2.9 KiB
Tcl
97 lines
2.9 KiB
Tcl
# \file Implements 'dsc actime interval' command.
|
|
set GROWFILE_STATE "DISABLED"
|
|
set growfileSaveIndex 0
|
|
|
|
|
|
proc doGrowFile {} {
|
|
global GROWFILE_STATE
|
|
global growfileSaveIndex
|
|
|
|
# Reset the GROWFILE_STATE variable in case some naughty user sets it directly
|
|
set GROWFILE_STATE "ENABLED"
|
|
set HMSTATE [SplitReply [hmm configure daq]]
|
|
set FSTATE [SplitReply [file_status]]
|
|
# broadcast CALLED: [info level 0], HMSTATE = $HMSTATE, FSTATE = $FSTATE
|
|
if { $FSTATE != "UNKNOWN" && $FSTATE != "OPEN" && $HMSTATE == "Started"} {
|
|
# broadcast growfile $growfileSaveIndex
|
|
save $growfileSaveIndex "growfile"
|
|
incr growfileSaveIndex
|
|
} else {
|
|
if {$growfileSaveIndex == 0} {
|
|
broadcast ERROR: GROWFILE HMSTATE = $HMSTATE, FSTATE = $FSTATE. The histmem must be running and you must create a newfile before calling "growfile"
|
|
} else {
|
|
broadcast STOP GROWFILE Acquisition finished. HMSTATE = $HMSTATE, FSTATE = $FSTATE.
|
|
save $growfileSaveIndex "growfile"
|
|
newfile clear
|
|
broadcast Saved [hval /experiment/file_name]
|
|
}
|
|
set growfileSaveIndex 0
|
|
sicspoll del doGrowFile
|
|
set GROWFILE_STATE "DISABLED"
|
|
hsetprop /instrument/detector/hmm mutable true
|
|
}
|
|
}
|
|
publish doGrowFile user
|
|
|
|
|
|
proc growfile { {interval 300} } {
|
|
global GROWFILE_STATE
|
|
global growfileSaveIndex
|
|
|
|
set GROWFILE_STATE "DISABLED"
|
|
set growfileSaveIndex 0
|
|
|
|
set as_error 0
|
|
|
|
set myrights [set_rights manager]
|
|
if {$myrights == -1} {
|
|
return -code error "ERROR: You are not authorized for this operation"
|
|
}
|
|
set interval [string tolower $interval]
|
|
if {$interval == "check" || $interval == "status"} {
|
|
if { $GROWFILE_STATE == "ENABLED" } {
|
|
return "GROWFILE $GROWFILE_STATE [sicspoll intervall doGrowFile]"
|
|
} else {
|
|
return "GROWFILE $GROWFILE_STATE"
|
|
}
|
|
} elseif {[string is integer $interval]} {
|
|
if {$interval <= 0} {
|
|
if { $GROWFILE_STATE == "ENABLED" } {
|
|
sicspoll del doGrowFile
|
|
set GROWFILE_STATE "DISABLED"
|
|
}
|
|
} else {
|
|
if {$GROWFILE_STATE == "DISABLED"} {
|
|
sicspoll add doGrowFile script $interval doGrowFile
|
|
# sicspoll listen # WARNING:When the listening client exits it leaves SICSPOLL task with a corrupt connection object.
|
|
set GROWFILE_STATE "ENABLED"
|
|
} else {
|
|
sicspoll intervall doGrowFile $interval
|
|
}
|
|
}
|
|
} else {
|
|
set as_error 1
|
|
}
|
|
|
|
set_rights $myrights
|
|
|
|
if {$as_error} {
|
|
return -code error "ERROR: Invalid argument in '[info level 0]', should be an integer or 'check'"
|
|
}
|
|
}
|
|
publish growfile user
|
|
|
|
# \brief Run histogram for the specified time and save XY binned data at the given interval.
|
|
# \param actime Acquisition time in seconds.
|
|
# \param saveint Save interval in seconds.
|
|
proc dsc {actime saveint} {
|
|
hsetprop /instrument/detector/hmm mutable false
|
|
newfile HISTOGRAM_XY
|
|
histmem mode time
|
|
histmem preset $actime
|
|
histmem start
|
|
growfile $saveint
|
|
}
|
|
|
|
publish dsc user
|