ich jage im Moment einen Geist .... ich verarbeite Messwerte, diese kommen als 1 Byte Zeichen an. Dazu wird ein Offset addiert und das ganze dividiert um für den Menschen, die Logs und die weitere Verarbeitung den korrekten Wert mit Dezimalstellen zu erhalten. Mit diesen Werten werden verschiedene Vergleiche zur überprüfung der verschiedenen Betriebsparameter ausgeführt.
Ab und zu, etwa 1 zu 1 Mio. ist der Vergleich aber falsch!
Vereinfacht sieht das so aus:
Code: Alles auswählen
b1 := chr(131) // erhaltener Messwert (1 Byte aus einem CAN-Bus Telegramm)
nUG := 3.2
n1 := ( asc(b1)+200) / 100 // Umrechnung in Dez Wert --> 3.31
if n1 <= nUG // 3.31 <= 3.2
// z.B. diese Werte als Vergleich 3.31 <= 3.2 ergibt ab und zu .t.
endif
Alle Werte stehen in Klassenvariablen, Arrays auf die schreibend nur über Sync Methoden zugegriffen wird. Zum Vergleich werden die Werte zuerst in local's geladen und nur mit diesen locals gearbeitet und aus diesen auch geloggt.
Hat jemand eine Idee was hier schiefläuft?