Kompilier-Fehler bei der Nextion-Library

Veröffentlicht von

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

Library

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)