#--------------------------------------------------------------------------
# A count command for FOCUS
# All arguments are optional. The current values will be used if not
# specified
# Dr. Mark Koennecke, Juli 1997
#--------------------------------------------------------------------------
proc SplitReply { text } {
     set l [split $text =]
     return [lindex $l 1]
}
#--------------------------------------------------------------------------
proc count { {mode  NULL } { preset NULL } } {
     starttime [sicstime]
#----- deal with mode
     set mode2 [string toupper $mode]
     set mode3 [string trim $mode2]
     set mc    [string index $mode2 0]
     if { [string compare $mc T] == 0 } {
       hm CountMode Timer
     } elseif { [string compare $mc M] == 0 } {
       hm CountMode Monitor
     }
#------ deal with preset
     if { [string compare $preset NULL] != 0 } {
       hm preset $preset
     }
#------ prepare a count message
     set a [hm preset]
     set aa [SplitReply $a]
     set b [hm CountMode]
     set bb [SplitReply $b]
     ClientPut [format " Starting counting in %s mode with a preset of %s" \
               $bb $aa] 
#------- count
#     hm InitVal 0
     wait 1
     set ret [catch {hm countblock} msg]
#------- StoreData
     storefocus update
#     wait 5
     if { $ret != 0 } {
       error [format "Counting ended with error: %s" $msg]
     }
}
#---------------- Repeat -----------------------------------------------
proc repeat { num {mode  NULL} {preset NULL} }  {
     for { set i 0 } { $i < $num } { incr i } {
        count $mode $preset
     }
}
