From 562bad002cca13e4d1e07811c6c678524fe433d3 Mon Sep 17 00:00:00 2001 From: zimoch Date: Mon, 18 May 2015 07:56:05 +0000 Subject: [PATCH] fix NaN and long strings --- ca | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ca b/ca index 7721c5a..963d46b 100755 --- a/ca +++ b/ca @@ -2,12 +2,12 @@ # ca* by Dirk Zimoch # $Source: /cvs/G/EPICS/App/scripts/ca,v $ -# $Date: 2015/05/18 07:09:44 $ +# $Date: 2015/05/18 07:56:05 $ regsub -all {\$} {ca* by Dirk Zimoch $Source: /cvs/G/EPICS/App/scripts/ca,v $ -$Revision: 1.29 $ -$Date: 2015/05/18 07:09:44 $} {} version +$Revision: 1.30 $ +$Date: 2015/05/18 07:56:05 $} {} version package require Tclx package require Epics @@ -125,8 +125,11 @@ proc formatval {channel {value {}} {sevr {}} {stat {}} {time {}}} { set time $TIME } if {$TYPE == "DBF_STRING" && [string length $value] == 39} { - puts "reread $channel as $channel$" - set value [pvget $channel$] + # long string: try to re-read as array of char + set field [file extension $channel] + if {$field != "" && $field != ".VAL"} { + catch {set value [pvget $channel$]} + } } catch { set null 0 @@ -156,10 +159,14 @@ proc formatval {channel {value {}} {sevr {}} {stat {}} {time {}}} { } foreach val $value { if [info exists PREC] { - if {$PREC < 0} { - set val [format "%.[expr -$PREC]e" $val] - } else { - set val [format "%.${PREC}f" $val] + if [catch { # new Tcl fails on NaN. Suck. + if {$PREC < 0} { + set val [format "%.[expr -$PREC]e" $val] + } else { + set val [format "%.${PREC}f" $val] + } + }] { + set val "NaN" } } if {$TYPE == "DBF_ENUM" && \