From b9b386e3f60f219cfc786888dc3189884a293482 Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Sun, 20 Jul 2014 20:49:20 +1000 Subject: [PATCH] Capture error messages in prun and pdrive. --- site_ansto/instrument/util/motor_utility.tcl | 42 ++++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/site_ansto/instrument/util/motor_utility.tcl b/site_ansto/instrument/util/motor_utility.tcl index e8e454fe..8fce55ca 100644 --- a/site_ansto/instrument/util/motor_utility.tcl +++ b/site_ansto/instrument/util/motor_utility.tcl @@ -52,22 +52,48 @@ publish reldrive user # \brief Posit run command for positional motors # \parameter List of motor names and position names proc prun {args} { - foreach {mot pname} $args { - lappend drlist $mot [SplitReply [$mot posit2unit $pname]] + if [ catch { + foreach {mot pname} $args { + lappend drlist $mot [SplitReply [$mot posit2unit $pname]] + } + clientput run {*}$drlist + capture run {*}$drlist + } message ] { + set msg_list [split $message \n] + set start [lsearch $msg_list ERROR*] + if {$start == -1} { + return $messge + } else { + return [join [lrange $msg_list $start end-1] \n] + } } - clientput run {*}$drlist - run {*}$drlist } publish prun user # \brief Posit drive command for positional motors # \parameter List of motor names and position names proc pdrive {args} { - foreach {mot pname} $args { - lappend drlist $mot [SplitReply [$mot posit2unit $pname]] + if [ catch { + foreach {mot pname} $args { + lappend drlist $mot [SplitReply [$mot posit2unit $pname]] + } + clientput drive {*}$drlist + capture drive {*}$drlist + } message ] { + set msg_list [split $message \n] + set start [lsearch $msg_list ERROR*] + if {$start == -1} { + return $messge + } else { + return [join [lrange $msg_list $start end-1] \n] + } + } else { + foreach {mot pname} $args { + lappend ret New $mot position: $pname + } + lappend ret Driving finished successfully + return $ret } - clientput drive {*}$drlist - drive {*}$drlist } publish pdrive user