Ich habe ein Example, der Nextion-Library testen wollen, da habe ich immer wieder ein Kompilier-Fehler bekommen
Fehler-Meldung
Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"
In file included from C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.h:18:0,
from C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:15:
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'bool recvRetNumber(uint32_t*, uint32_t)':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:55:5: note: in expansion of macro 'nexSerial'
nexSerial.setTimeout(timeout);
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'uint16_t recvRetString(char*, uint16_t, uint32_t)':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:114:16: note: in expansion of macro 'nexSerial'
while (nexSerial.available())
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'void sendCommand(const char*)':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:166:12: note: in expansion of macro 'nexSerial'
while (nexSerial.available())
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:171:5: note: in expansion of macro 'nexSerial'
nexSerial.print(cmd);
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'bool recvRetCommandFinished(uint32_t)':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:192:5: note: in expansion of macro 'nexSerial'
nexSerial.setTimeout(timeout);
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'bool nexInit()':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:226:5: note: in expansion of macro 'nexSerial'
nexSerial.begin(9600);
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp: In function 'void nexLoop(NexTouch**)':
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexConfig.h:37:19: error: 'Serial2' was not declared in this scope
#define nexSerial Serial2
^
C:\Users\Inge\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion-0.7.0\NexHardware.cpp:242:12: note: in expansion of macro 'nexSerial'
while (nexSerial.available() > 0)
^
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Code-Sprache: PHP (php)
Lösung
Quelle: Link Fehler-Lösung
Die Nextion-Bibliothek verfügt über eine Datei mit dem Namen
NexConfig.h, in der Sie die von der Bibliothek verwendeten seriellen
Schnittstellen konfigurieren können. Standardmäßig verwendet die
Bibliothek Serial für die Debug-Ausgabe und Serial2 für die
Kommunikation mit der Nextion-Anzeige. Ihr Nano hat keine Serial2, daher
der Fehler.
Der Nano verfügt nur über eine einzige serielle
Hardware-Schnittstelle: Seriell. Dies ist der Port, über den zwischen
dem Nano und Ihrem Computer kommuniziert wird, sowohl für die Ausgabe
von Serial.print () an Serial Monitor als auch für das Hochladen von
Skizzen auf Ihren Nano. Sie müssen Serial für die Kommunikation mit dem
Nextion-Display verwenden. Wenn Ihr Code auch Serial.print ()
-Anweisungen für die Debug-Ausgabe an Serial Monitor enthält, werden
diese ebenfalls an die Nextion-Anzeige gesendet und funktionieren
möglicherweise nicht. Sie müssen also ohne Debug-Ausgabe arbeiten, keine
gute Situation. Es ist auch wahrscheinlich, dass das Anschließen des
Nextion-Displays an die Pins 0 und 1 (seriell) das Hochladen von Skizzen
auf Ihren Nano beeinträchtigt und Sie das Display vor jedem Upload von
diesen Pins trennen müssen.
Sie können die Dateien der
Bibliothek im Arduino Web Editor nicht bearbeiten. Sie müssen daher die
Nextion-Bibliothek auf Ihrem eigenen Computer ändern und anschließend
erneut in den Arduino Web Editor importieren. Die Zeilen in NexConfig.h,
die Sie ändern müssen, sind:
Zeile 27
#define DEBUG_SERIAL_ENABLECode-Sprache: CSS (css)
ändern in
//#define DEBUG_SERIAL_ENABLECode-Sprache: JSON / JSON mit Kommentaren (json)
und Zeile 37
#define nexSerial Serial2Code-Sprache: CSS (css)
ändern in
#define nexSerial SerialCode-Sprache: CSS (css)