ich schreibe gerade meine Bachelorarbeit und habe eine Verständnisfrage.
Ich verschicke Werte vom Controller an ein Nextion Display über die Serielle Schnittstelle.
Das schaut im Code z.B. so aus:
Serial2.print("n3.val=" + String(rotationsgeschwindigkeitn17x)); //Nema 17 X
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Funktioniert alles perfekt. Meine Frage, die mich mein Prof bestimmt auch fragen wird:
Wofür wird 3x das Serial2.write(0xff) benötigt? Ich habe es einfach nach der Syntax programmiert,
weiß aber nicht warum es ohne nicht funktioniert. Danke euch!
Die Verwendung von String hat unnötige Auswirkungen auf den Speicher. Also, wenn Sie es vermeiden können, tun Sie es!
In Bezug auf die andere Frage: Wenn Sie mehrere Befehle verketten möchten, müssen Sie in der Nextion-Dokumentation nachsehen, was das Befehlstrennzeichen ist. (Ich verwende Nextion nicht, da sie macOS nicht unterstützen, daher habe ich die API nie im Detail untersucht.)
(Ich würde denken, dass sie die Befehlsaggregation nicht unterstützen und Sie jedes Mal die drei 0xFF senden müssen)
Das mit dem String ist in deinem Fall auch nicht nötig, da das Feld "Val" im Nextion nur Werte, also Zahlen aufnimmt. Und das nur als Ganzzahl.
Lies dir doch mal die Dokumentation zum Nextion durch, da steht alles genau drin.
Und ja, du musst jede Anweisungszeile mit 3 x 0xff abschließen.
Edit:
Suche mal hier im Forum nach "Tipps zum Nextion", da gibt es schon viele Infos.
Ja ich hab mir die Nextion Doku schon oft durchgelesen. Ich weiß schon, dass ich die 0xff machen muss, darum geht es mir ja auch nicht. Ich wollte eher genau verstehen, was dieser Ausdruck macht, warum es genau 3 mal geschrieben werden muss und warum es nicht 2xee heißen darf. Es ist ja kein Zauberspruch, das sollte ja schon einen Sinn ergeben.
Warum das genau 3 x 0xff sein muss, musst du wohl den Hersteller befragen. Der hat das so festgelegt. Deshalb darfst du nicht einfach was anderes schreiben. So ist das nun mal mit den Anweisungen der Hersteller. Du kannst natürlich innerhalb deines Sketches auch andere Anweisungen dafür definieren, wenn es sein muss. Dass musst du dann in deinem Sketch genau festlegen.
Wenn Sie einen seriellen Befehls-Parser schreiben müssen, erleichtert ein Endmarker die Arbeit. Sie hören sich an, was von der seriellen Leitung kommt, und "buffern" es, bis Sie diese Endmarkierung erhalten, und können dann einen ganzen Befehl analysieren.
Die Firma Nextion entschied, dass 3 aufeinanderfolgende 0xFF das Ende eines wohlgeformten Befehls markieren würden. Das ist Nextion Entscheidung, damit muss man leben.
Ich hab noch ne weitere Frage, die sich jetzt nicht mehr auf die Eingangsfrage bezieht. Ich will jetzt kein neuen Thread aufmachen.
Weiß einer, wie man ein Arduino Programm schön plotten kann? Ich muss des in meine Bachelorarbeit anhängen und wenn ich das mit "Print to PDF" mache, schaut das einfach total kacke aus.