HM-CC-TC falsche Temperaturwerte bei <0°C

Begonnen von gichtl, 30 Dezember 2015, 15:46:48

Vorheriges Thema - Nächstes Thema

gichtl

Die Temperaturumwandlung für HM-CC-TC ist falsch und liefert Temperaturen weit unterhalb des absoluten Nullpunkts:

2015-12-30_09:19:53 T.ZZZ T: -1637.8 H: 58
2015-12-30_09:22:39 T.ZZZ T: -1635.9 H: 59
2015-12-30_09:25:11 T.ZZZ T: -1634.1 H: 59

(Die Temperaturen sollten eigentlich -0.6, -2.5 und -4.3 lauten.)

Der Grund dafür ist eine abenteuerliche Umrechnung des 15-Bit Temperaturwerts in Zeile 1348 von 10_CUL_HM.pm:
$t = sprintf("%2.1f",($t & 0x3fff)/10*(($t & 0x4000)?-1:1));
Das ist falsch und müßte geändert werden in:
$t = (($t & 0x4000)?-1-($t ^ 0x7fff):($t & 0x3fff))/10;
oder noch besser in
$t &= 0x7fff;
$t = -1 - ($t ^ 0x7FFF) if ($t & 0x4000);
$t /= 10;

was sich besser lesen läßt und somit wartbarer ist.

martinp876