Hallo allerseits, kann mir bitte jemand helfen.
Mein Problem: Das Nextion sendet Daten korrekt. Diese werden auch empfangen und richtig interpretiert. ABER: das Nextion wechselt die Seite nicht. Die Schnittstellen wurden geprüft. Das ist die Ausgabe auf dem seriellen Monitor.:
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Also die Ausgabe kann schon mal nicht stimmen, da fehlt die Ausgabe aus "Nextion-Kommunikation gestartet" aus dem setup.
Dafür taucht sie mitten drin auf?
Sinn ergibt das nur ohne die ersten drei Ausgaben.
Dann ist das ein Widerspruch:
// Direkt beim Start den Befehl "page 1" senden
sendeNextionBefehl("page 2");
Und dann brauchts es die *.hmi, von hier lässt sich schlecht auf das Display schauen .
Denn logisch ergibt das Ganze auch keinen Sinn.
Theoretisch muss die Eingabe auf page2 (1) erfolgen, denn dahin soll das Display im setup. Wenn das Display aber nicht wechselt ...., wie erfolgt die Eingabe?
Ich sehe mir den Sketch nicht genauer an, da er für mich zu unübersichtlich und unkomplett ist.
Zu deinem Problem sieh dir die aktuell noch vorhandene Beschreibung auf der Boecker Website an. Da findest du sicher eine Lösung zu deinem Problem.
Vielen Dank für die Antwort. Der Befehl wird vom Arduino aus gesendet. Die empfangenen Daten werden dann über den seriellen Monitor des Arduino ausgegeben. Zum Verständnis: [Wenn ich einen Befehl vom Nextion an das Arduino sende, werden die Daten richtig gesendet, empfangen und interpretiert. Eine funktionierende Verbindung besteht. Es existiert auch ein Feld t0 mit dem vscope=global] Für mich schaut es so aus, als ob das Nextion den Befehl ignoriert oder nicht richtig interpretiert. Nach dem senden des ("t0.txt=\"Test\"") mit abschliessendem Terminator sendet das Nextion das Echo des Befehls zurück. Das Feld t0.txt ändert den Inhalt aber nicht. Das passiert egal welchen Befehl ich an das Nextion sende, auch beim für mich angenommen einfachsten wie page 1
Hier noch einmal der Code:
void setup() {
Serial.begin(9600); // Debugging über den PC
Serial2.begin(9600); // Verbindung zum Nextion-Display
Serial.println("Nextion-Kommunikation gestartet.");
sendeNextionBefehl("t0.txt=\"Test\""); // Setzt den Text eines Feldes "t0" auf "Test"
}
void loop() {
nextionDatenEmpfangen(); // Empfange und zeige kontinuierlich Daten an
}
// Funktion zum kontinuierlichen Empfangen von Daten vom Nextion
void nextionDatenEmpfangen() {
if (Serial2.available()) {
char antwort[50]; // Puffer für empfangene Daten
int index = 0;
while (Serial2.available() && index < sizeof(antwort) - 1) {
char zeichen = Serial2.read();
antwort[index++] = zeichen;
// Debugging: Zeige jedes Zeichen in HEX-Format
Serial.print("0x");
Serial.print(zeichen, HEX);
Serial.print(" ");
}
antwort[index] = '\0'; // Null-terminieren
Serial.println(); // Neue Zeile für Lesbarkeit
Serial.print("Empfangene Daten: ");
Serial.println(antwort); // Zeige empfangene Daten als String
}
}
// Funktion zum Senden eines Befehls an das Nextion
void sendeNextionBefehl(const char* befehl) {
Serial2.print(befehl);
Serial2.write(0xFF); // Terminator
Serial2.write(0xFF);
Serial2.write(0xFF);
Serial.print("Befehl gesendet: ");
Serial.println(befehl);
}
Hier die Ausgabe auf dem seriellen Monitor nach dem hochstarten.
Vielen Dank für die Antwort. Der Sketch schaut wahrscheinlich wegen der Funktion void nextionDatenEmpfangen() unübersichtlich aus. Sorry. Das ist aber wichtig für mich weil das Nextion keinerlei Reaktion auf gesendete Befehl zeigt, obwohl es Daten an das Arduino sendet. Eine funktionierende Verbindung ist sichergestellt. Beschreibung: Boecker. Vielen Dank für den Hinweis, von diesen Seiten habe ich auch schon viel gelernt.
Ok, ich tippe mal auf unsichtbare Steuerzeichen in der Befehlsübergabe.
Versuche es mal mit einfachem String "page 1" statt char in "void sendeNextionBefehl()"
Vielen Dank für die Mühe. Hier das HMI-File.(als txt deklariert, bitte umbenennen auf *HMI. Ich hoffe ihr könnt was herausfinden oder einen Fehler entdecken. vorerst vielen Dank. 5-Zoll-CNC-V30.txt (7,8 MB)
@wdj
Die Frage wohin es im setup denn nun tatsächlich gehen soll hast Du immer noch nicht beantwortet. Und kommst Du auf page 2/1???
Und was sendet A, B und C?
Parameter/Save sendet 65, aber nur 65, ohne etwas dahinter?
Manuell/Execute sendet einen Haufen Geraffel mit je 3x FF?
Ich rege mich über so etwas nicht mehr auf.
Wer mich ignoriert, den ignoriere ich halt auch. Maximal einmal rückfragen, falls es einer übersehen hat.
Ich habe kein Problem zu lösen, kann also gut damit leben.
Funktioniert bei mir im Simulator (fast) wie gewünscht, d.h. keine Rückmeldung vom Display und das gewünschte (der Text erscheint in t0) tritt ein.
Deshalb vermute ich nun für Dein aktuelles Problem, dass Du evtl. Hardwaremäßig Leitungen von Serial und Serial2 zusammengeklemmt oder anderweitig falsch verdrahtet hast.
Was ich allerdings für bedenklich halte:
Du benutzt Texte als Button. Das kann gut gehen, ich finde es falsch.
Ganz gewiss schief geht es beim t3 "Manuell Steuerung" auf der Startseite. Da schießt dich der "press"-Event auf page 3 und der Release-Event dann gleich danach auf page 1.
Wie das mit dem Editieren der Parameter gehen soll, hat sich mir noch nicht erschlossen.
Das stimmt, aber ich glaube das gar nicht mal so.
Man kann bei massenhaft Antworten schon etwas übersehen (aktuell z.B. VS von mir), aber viele lesen heute nur noch diagonal und die Aufmerksamkeitsspanne, naja ....
Nach dem setup ist deer code auch fertig. Es soll nur festgestellt werden ob eine aufrechte Kommunikation mit dem Nextion besteht. page 1 oderpage 0 sind nur verzweifelte Versuche eine Reaktion auf dem Nextion zu sehen. zu nur 65: das ist ASCII 'A' und wir im regulären code interpretiert und es wird eine entsprechende funktion( die xAchse zum end schalter fahren) aufgerufen. Manuell/Execute sendet ASCII 'Z' und die X,Y,Z,H - Positionen, um die Achsen auf die entsprechende Positionen zu fahren. In diesem code sind die Funktionen nicht implementiert. Es soll der Veranschaulichung dienen, dass die Kommunikation an sich funktioniert. Aber es ist mir nicht zugänglich wie ich einen Befehl an das Nextion senden kann, so das es auch reagiert.
Sorry, ich will niemanden ignorieren sondern freue mich auf eine Lösung. Aber glaube mir,ich habe schon alles erdenkliche probiert die Befehle an das Nextion zu senden. mit write(), print(), der Befehl in CHAR in HEX ... formuliert. unsichtbareSteuerzeichen sollte der Befehl nextionDatenEmpfangen() abfangen und auf dem seriellen Monitor ausgeben, was auch geschieht.
Bedenke: das ist mein erstes Nextion-Pojekt. Und ja, im Nextion-Simulatorfunktioniert es bei mir auch. Das eerzeugt ja auch die Verwirrung. Ich habe mir deshalb extra ein Nextion(Basic) mit der gleichen Auflösung angeschafft. Aber hier komme ich auch nicht weiter. Es reagiert mit diesen einfachen Befehlen wie das Nextion(Intelligent), und reagiert auf gesendeten Code nicht. Kann es eine "Konfigurationseinstellung" im Nextion sein?
Unsichtbare Steuerzeichen sind in der print-Ausgabe halt unsichtbar. Die kannst Du nur in einer HEX-Ausgabe aller Zeichen finden.
Aber eigentlich geht es doch eher um das Senden zum Nextion. Da musst Du prüfen, was wirklich gesendet wird. Du hast ja das Problem, dass das Nextion den "Auftrag" nicht annimmt.