Hallo Whandall,
ist ja kein Wunder, das wir uns in die Plünnen kriegen…
Nextion.h und SSerial.h nutze ich nicht.
"In die Nextion Library habe ich mal einen Blick geworfen und mich dann mit Grausen abgewendet."
Da sind wir schon zwei.
Mal ganz leise…
Ist ja nett von Dir, das Du Dir die Mühe gemacht hast, einen Sketch für das
Nextion zu schreiben, aber-
Zum einem verstehen das nur die Profis- zum anderem, es geht hier nicht darum
Text zum Nextion zu senden. Es geht darum Text vom Nextion zu empfangen.
Arduino ist TextEmpfänger <-> Nextion ist TextSender- alles ohne Library´s
Das ist meine Grundlage (von Serenifly) zum Empfangen auf dem Arduino:
Warum das,
(c == '\r' && c == '\n')
funktioniert hatte ich ja, meiner Meinung nach, "richtig" (#19) erklärt.
Dann ist eingeworfen worden, das es eigentlich nicht- funktionieren kann.
Eine Begründung gab es aber nicht.
Wenn das Nextion etwas senden soll, dann werden vom Nextion eigentlich
keine Escape-Sequenzen angenommen.
Es kommt im Nextion zur Fehlermeldung:
Error: Improper use of escape characters print "\n"… blah, blah
Die üblichen Steuerzeichen sind:
\0 0x00
\a 0x07
\b 0x08
\f 0x0C
\n 0x0A
\r 0x0D *
\t 0x09
\v 0x0B
\\ 0x5C *
\" 0x22 *
\' 0x27
Die mit * markierten rufen im Nextion keine FehlerMeldung auf.
Im Nextion löse ich ein Event aus, das folgendes Kommando ausführt:
print "Test"
print "\r"
Die Ausgabe des Nextion ist:
0x54 0x65 0x73 0x74 0x0D 0x0A
das wird vom Arduino beim Empfang durch
else if ((c == '\n' || c == '\r') || (c == '\r' && c == '\n') && index > 0)
ohne Fehler angenommen. Hatten wir ja schon.
Wenn man aber das SteuerZeichen \r sendet, dann sollte beim Empfänger aber
nur 0x0D ankommen.
Dem ist beim Nextion aber nicht so- es liefert 0x0D 0x0A
Sendet man mit dem Nextion also durch print "\r" wird 0x0D 0x0A ausgegeben.
Das ist eigentlich falsch?
Sendet man mit dem Nextion also durch print "\" wird 0x5C ausgegeben.
Das ist richtig
Sendet man mit dem Nextion also durch print """ wird 0x22 ausgegeben.
Das ist richtig.
Der Arduino verarbeitet und wertet richtig aus:
else if ((c == '\n' || c == '\r') || (c == '\r' && c == '\n') && index > 0)
Hier gibt der Arduino keine FehlerMeldung, wertet aber auch nicht aus
else if ((c == '\n' || c == '\r' || c == '\\') || (c == '\r' && c == '\n') && index > 0)
else if ((c == '\n' || c == '\r' || c == '\\') && index > 0)
Hier gibt der Arduino eine FehlerMeldung
else if ((c == '\n' || c == '\r' || c == '\"') || (c == '\r' && c == '\n') && index > 0)
else if ((c == '\n' || c == '\r' || c == '\"') && index > 0)
Ich bin damit durch, bei mir funktioniert es wie es soll. Das Nextion hat einige Eigenheiten die so einfach wohl nicht zu verstehen sind. Mal sehen was als nächstes kommt.
Also, vielen Dank für Eure Mühe.
Gruß und Spaß
Andreas
P.S.
"Ich hatte keine Probleme mit irgenwelchen -1en"
Die reproduziere ich noch einmal...