NEWS
Node Red Serial & Buffer Parser
-
Hallo zusammen,
ich übertrage seriell 52 Byte von einem Arduino zum Raspberry und lese diese mit Mode Red Serial und verarbeite die Daten mit dem Buffer Parser um meine Datenpunkte zu füllen.Eigentlich klappt das auch ganz gut.
Allerdings habe ich manchmal einen Versatz in meinen Daten. Das heißt das Wert1 vom Arduino auf dem Feld 5 nach dem Parser steht. Dieser Versatz ist nicht fix und ändert sich auch immer Mal nach einem Neustart.Das betrifft eigentlich nur den Start.
Läuft es einmal ist es auch stabil!Woher das kommt finde ich Grad nicht raus.
Starte ich die Instanz Node Red mehrmals neu geht's dann auch wieder.
Sind ca. 20% in den es nicht klappt.Das Array welches gesendet wird, sollte nicht das Problem sein da alle Werte auch beim Start ja einen Wert haben. Die Reihenfolge ist auch klar, dann kann sich nichts vertauschen.
Woher dann Datenmüll vor dem Feld1 kommen sollte ist mir unklar.
Oder ist es Node Red, dort vielleicht noch was im Puffer was vor Feld1 im Speicher steht und so versetzt?Wie kann ich sicherstellen dass die Werte immer auf der richtigen Stelle nach dem Parser stehen?
Jemand sowas schon gehabt?
-
@bavarian Du könntest doch eine Startsequenz definieren und dann 52 Byte Pakete in der Serial-Node definieren.
-
@mickym die 52 Byte Länge stehen ja in Node Red in der Config der Schnittstelle.
Startsequenz fällt mir nur auf der Arduino Seite ein eine Schleife die die ersten Datenpakete nicht schreibt und erst nach X Durchgängen anfängt kontinuierlich zu schreiben. -
@bavarian Hmm - dann glaube ich - kann ich erst mal nicht helfen bzw. habe keine Idee.
-
@mickym trotzdem Danke!
Gar nicht so leicht rauszufinden auf welcher Seite es diesen Offset gibt.Vielleicht meldet sich noch jemand der das Problem kennt.
-
Lösung gefunden!
Zwischen der Schnittstelle und dem Buffer-Parser habe ich ein Split gesetzt und ein Trennzeichen definiert.
Dazu die Größe des Array welches Empfangen wird + Tennzeichen als Feste Größe.
Wichtig, das muss als Stream behandelt werden.Vielleicht hilft es jemandem.
-
@bavarian Ich hab mich da schon mal blamiert, da ich dachte der split Node hat einen Fehler - aber funktioniert.
Hier mal ein geclosed Issue von mir.
mit meinen Versuchen:
https://github.com/node-red/node-red/issues/3457
Die letzten 3 simulieren einen Stream mit der split Node.