From: Jan Michel Date: Mon, 28 Jan 2019 16:33:34 +0000 (+0100) Subject: fix handling of signed numbers in xml-db get function X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=73e98a489aae8672f35970732eb712c949a33abd;p=daqtools.git fix handling of signed numbers in xml-db get function --- diff --git a/xml-db/get.pl b/xml-db/get.pl index 52a4cb2..de68502 100755 --- a/xml-db/get.pl +++ b/xml-db/get.pl @@ -186,11 +186,18 @@ sub FormatPretty { $value &= ((1<<$obj->{bits})-1); $rawvalue = $value; + if ($obj->{format} eq 'signed') { + if ($value & (1<<($obj->{bits}-1))) { + $value &= ((1<<($obj->{bits}-1))-1); + $value -= (1<<($obj->{bits}-1)); + } + } + if ($rates && $obj->{rate}) { $value = makerate($obj,$value,$addr,$b); $class.=" rate"; - } - + } + $value = $value * ($obj->{scale}||1) + ($obj->{scaleoffset}||0); } @@ -227,7 +234,9 @@ sub FormatPretty { $t =~ s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g; $ret .= $cl.$t; } - when ("signed") { $ret .= sprintf("$cl%d",$value);} + when ("signed") { $t = sprintf("%i",$value); + $t =~ s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g; + $ret .= $cl.$t;} #$ret .= sprintf("$cl%d",$value); when ("binary") { $t = sprintf("%0".$obj->{bits}."b",$value); $t =~ s/(?<=\d)(?=(?:\d\d\d\d)+\b)/ /g; $ret .= $cl.$t;