Der Fehler ist normal: Das Gerät sendet ständig, und dein Programm beginngt irgendwann mit dem Lesen. In den meisten Fälle wird das in einer Sendepause sein, und dann hat man Glück. Es kann aber auch aber auch mitten in einem Datensatz oder sogar mitten in einem gesendetem Byte sein. Dann hat man Fehler. Man könnte die vermeiden, indem man erst das Programm einschaltet und dann das Gerät. Besser aber löst man das Problem in der Software, und zwar so:
1.) Das Lesen muß in einer Schleife erfolgen, die Schnittstelle darf nicht ständig neu konfiguriert werden.
2.) Wenn es beim Lesen anfänglich Daten- oder Rahmenfehler gibt, so sind diese Fehler abzufangen und die Daten zu verwerfen.
3.) Wenn das nicht mehr der Fall ist, ist die Datenverbindung "synchronisiert" und die Daten können benutzt werden.
Tip:
Einlesen entweder so:
Zeilenweise einlesen, Abschlußzeichen "Zeilenende" aktivieren. In einer inneren Schleife alle Zeilen eines Datensatzes lesen. Die Letzte Zeile erkennt man am Ausrufezeichen. Man hatte dann ein Zeilen-Array.
Oder so:
Als Abschlußzeichen "!" aktivieren. Dann wird der vollständige Text eines Datensatztes auf einmal gelesen. Man muß dann den Text analysieren, was etwas umständlicher ist als wenn es bereits ein Zeilen-Array wäre.
Hier noch ein Entwurf (ungeprüft) zur Methode 1:
IR_Leistung.vi (Größe: 19,3 KB / Downloads: 281)
(Falls der Stringvergleich mit "!" nicht funktioniert, dann die Stringfunktion "Nicht ausführbare Zeichen entfernen" noch einfügen.)