fix NaN and long strings

This commit is contained in:
zimoch
2015-05-18 07:56:05 +00:00
parent f1e6d97ec2
commit 562bad002c
+16 -9
View File
@@ -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" && \