Der Nextion sendet seine Daten selbständig oder auf Anforderung an den Host-Controller. Dabei ist es wichtig zu wissen, wie die Datenstrukturen (Protokolle) aufgebaut sind. Wir haben schon mehrfach gelesen, dass eine Datenübertragung vom und zum Nextion z. B. sehr häufig mit der Terminierung "0xff 0xff 0xff" beendet wird. Aber das ist nicht immer der Fall und es gibt noch weitere Festlegungen, die wir kennen müssen.
Eine spezielle Protokollfestlegung sind auch die sogenannten "Fehlercodes". Diese Funktionalität ist bei einer Kommunikation von großem Interesse, denn Sie können damit in gewisser Weise feststellen, ob Ihre Kommandos auch richtig angekommen bzw. verarbeitet worden sind. Es handelt sich dabei nicht um Nutzdaten, sondern lediglich um Informationen über den Erfolg oder Misserfolg bestimmter Aktionen.
Ob und in welcher Form Sie Rückgaben vom Nextion erhalten, bestimmen Sie über die bkcmd-Systemvariable.
Die folgende Beschreibung ist wie folgt aufgebaut:
1. Byte | Bezeichnung | Format | Beispiele |
---|---|---|---|
0x65 | Touch-Event | 0x65+pid+cid+evt+end | 0x65 0x01 0x02 0x01 0xff 0xff 0xff Die Komponente "id=2" auf der Seite 1 hat ein Touch-Press-Event ausglöst |
0x66 | Seiten-ID | 0x66+pid+end | 0x66 0x01 0xff 0xff 0xff Nach Senden des Befehls sendme erfolgt die Rückgabe der Seiten-ID (hier Seite 1) |
0x67 | Koordinaten | 0x67+x2+x1+y2+y1+evt+end | 0x67 0x01 0x30 0x00 0x1e 0x01 0xff 0xff 0xff Auf der Koordinate x=304 (hexadezimal "130") und y=30 (hexadezimal "1e") wurde der Bildschirm berührt. Die Ausgabe erfolgt nur wenn der Inhalt von sendxy 1 ist. |
0x68 | Touch-Event im Sleep-Modus | 0x68+x2+x1+y2+y1+evt+end | 0x67 0x01 0x30 0x00 0x1e 0x01 0xff 0xff 0xff Auf der Koordinate x=304 (hexadezimal "130") und y=30 (hexadezimal "1e") wurde im Sleep-Modus der Bildschirm berührt. Die Ausgabe erfolgt unabhängig vom Zustand von sendxy. Da im Sleep-Modus keine Elemente sichtbar sind, wäre eine Auswertung der einzelnen Touch-Aktionen für die Objekte sinnlos. Deshalb werden generell nur die Koordinaten zurückgegeben. |
0x70 | Rückgabe eines Strings | 0x70+d0+d1+d2+...+dn+end | 0x70 0x74 0x65 0x73 0x74 0xff 0xff 0xff Es wurde der String "test" übergeben. |
0x71 | Rückgabe einer 4-Byte-Zahl | 0x71+d0+d1+d2+d3+end | 0x71 0x44 0x01 0x00 0x00 0xff 0xff 0xff Es wurde die Zahl 324 übertragen 0144(hex) |
0x86 | Auto-Sleep-Modus | 0x86+end | 0x86 0xff 0xff 0xff Es wurde automatisch in den Sleep-Modus gewechselt. |
0x87 | Auto-Wakeup | 0x87+end | 0x87 0xff 0xff 0xff Im Display wurde automatisch ein Wakeup ausgelöst. |
0x88 | Erfolgreicher Systemstart | 0x88+end | 0x88 0xff 0xff 0xff Das System wurde erfoglreich gestartet. |
0x89 | Start von SD-Karte | 0x89+end | 0x89 0xff 0xff 0xff Es wurde eine SD-Karte erkannt und die Firmware darauf ins Nextion-Device übertragen. |
0xfe | Transparent Modus | 0xfe+end | 0xfe 0xff 0xff 0xff Momentan gibt es zwei Befehle addt und wept, bei denen nach der Ausführung der transparente Modus erreicht wird. Dabei wird zuvor eine Anzahl von Bytes festgelegt, die dann nacheinander übertragen werden können. Diese Kommandos sind vor allem für größere Datenmengen geeignet. |
Über die einzelnen Fehlercodes können Sie sehr schnell eingrenzen, wo ein Problem liegt. Im Gegensatz zu den Rückgabewerten gibt es hier keine weiteren Parameter, sondern immer nur das Fehler-Byte gefolgt von der Endterminierung. Deshalb werde ich mir hier das Format und Beispiele sparen.
Fehlercode | Beschreibung |
---|---|
0x00 | Es wurde kein gültiger Befehl gesendet. |
0x01 | Der einzige Fehlercode über den Sie sich freuen können. Er besagt: Befehl wurde erfolgreich ausgeführt! |
0x03 | ungültige ID für Seite |
0x04 | ungültige ID für Bild |
0x05 | ungültige ID für Zeichensatz |
0x11 | ungültiger Wert für Baudrate |
0x12 | ungültige Kanal-Nr. bei einer Waveform-Komponente |
0x1A | ungültiger Variablenname oder unbekannte Eigenschaft einer Komponente |
0x1B | ungültige Zuweisung für eine Variable (z. B. progressbar.val="text" oder text.txt=10 ) |
0x1C | Zuweisung zur Eigenschaft nicht erfolgreich* |
0x1D | Fehler beim Ausführen der PERFROM-Operation* |
0x1E | fehlerhafte Anzahl von Befehlsparametern |
0x1F | fehlerhafte I/O-Operation* |