fix NaN and long strings
This commit is contained in:
@@ -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" && \
|
||||
|
||||
Reference in New Issue
Block a user