Ungültige Messwerte ausmerzen

Seitdem ich die DS18B20 und DS18S20 Sensoren im Einsatz habe, fielen immer wieder und in nicht nachvollziehbaren Häufungen Datensätze auf die einen invaliden Messwert ausweisen. Zu erkennen sind diese an dem negativen Mesßwert, aber noch viel einfacher daran, dass kein CRC=YES zu finden ist.

Was kann man gegen diese Werte tun? Da ich nicht um deren Ursache weis, kann ich nicht sagen, ob man was gegen die wirkliche Ursache tun kann. Ich kann es sicher nicht. Grundlegende Dinge wie kurze Leitungen sind selbstverständlich, da lässt sich nichts mehr machen. Also habe ich diese Aufgabe der Meßwerterfassung übertragen. Da die falschen Werte nur sporadisch vorkommen finde ich es legitim in einem solchen Fall den Meßwert des vorigen Intervalls zu „erben“.

Fangs habe ich den Aufwand betrieben die Meßwertdatei zu öffnen und die letzte Zeile zu zerlegen, sowie den Meßwert dann mit neuem Zeitstempel wieder als neuen Datensatz zu schreiben. Alles viel zu kompliziert. Jetzt geht das viel einfacher, indem jedes Mal, wenn ein gültiger Meßwert vorliegt, dieser (und zwar NUR der Meßwert) in eine Datei (pro Sensor) geschrieben wird.

Wird nun ein ungültiger Meßwert bei einem neuen Datensatz festgestellt, so lese ich einfach die Datei mit dem letzten gültigen Meßwert ein und schreibe diesen, um Datum und Zeit wieder raus. Einfach und schnell. Sollte mal der Fall auftreten, dass keine Datendatei vorhanden ist, aber ein ungültiger Meßwert festgestellt wird, dann schlägt die Exception zu und es wird eine 0 geschrieben. Kann aber eigentlich nur beim ersten Meßintervall auftreten und ist noch nie vorgekommen.

Anbei der neue Code der Datei basics_class:

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


vier × 4 =