ESP8266 Arduino externe Datei

OP #7074538
Lesenswert?
• ▲
▼
Hallo,
ich möchte die Initialisierungen in meinem Projekt in externe Dateien 
auslagern. Mit einfachen Funktionen funktioniert das auch. Allerdings 
habe ich ein Problem mit der Initialisierung des WiFi.
So wie es unten dargestellt ist, erhalte ich folgende Fehlermeldung:

/Users/###/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc 
/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../. 
./xtensa-lx106-elf/bin/ld: 
/var/folders/hc/vhmyq3qx3f712vrd66vbv_xh0000gn/T/arduino_build_314809/sk 
etch/Test_WiFi_V1.ino.cpp.o:/Users/###/Documents/Arduino/Test_WiFi_V1/Te 
st_WiFi_V1.ino:3:  multiple definition of `MyServer'; 
/var/folders/hc/vhmyq3qx3f712vrd66vbv_xh0000gn/T/arduino_build_314809/sk 
etch/Test1.cpp.o:/Users/###/Documents/Arduino/Test_WiFi_V1/Test1.cpp:3: 
first defined here

collect2: error: ld returned 1 exit status

Bibliothek ESP8266WiFi in Version 1.0 im Ordner: 
/Users/###/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/lib 
raries/ESP8266WiFi   wird verwendet

exit status 1

Fehler beim Kompilieren für das Board NodeMCU 1.0 (ESP-12E Module).

Meine Frage dazu. Wie kann ich die Instanz von WiFiServer MyServer(80) 
als extern einbinden.

Noch allgemeiner gefragt. Kann ich die Instanzen aus den Arduino/ESP8286 
Bibliotheken überhaupt als extern deklarieren?

Lasse ich die extern-Deklaration in der Datei "Test1.cpp" weg, erhalte 
ich als Fehlermeldung:

Test1.cpp:6:3: error: 'MyServer' was not declared in this scope; did you 
mean 'Server'?
    6 |   MyServer.begin();
      |   ^~~~~~~~
      |   Server
Bibliothek ESP8266WiFi in Version 1.0 im Ordner: 
/Users/harald/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/ 
libraries/ESP8266WiFi   wird verwendet
exit status 1
'MyServer' was not declared in this scope; did you mean 'Server'?

Was auch verständlich ist.

Datei "Test_WiFi_V1.ino"
1
#include "Test1.h"
2

3
WiFiServer MyServer(80);
4

5
void setup() {
6
  Set_WiFi ();
7
}
8

9
void loop() {
10

11
}

Datei "Test1.cpp"
1
#include "Test1.h"
2

3
extern WiFiServer MyServer(80);
4

5
void Set_WiFi (void) {
6
  MyServer.begin();
7
}
8

9
void Test1_Loop (void) {
10
}

Datei "Test1.h"
1
#include <ESP8266WiFi.h>
2

3
void Set_WiFi (void);
#7074542
Lesenswert?
• ▲
▼
Datei "Test_WiFi_V1.ino"
1
#include "Test1.h"
2

3
WiFiServer MyServer(80);
4

5
void setup() {
6

7
  Set_WiFi ();
8

9
}
10

11
void loop() {
12

13
}

Datei "Test1.cpp"
1
#include "Test1.h"
2

3
void Set_WiFi (void) {
4

5
  MyServer.begin();
6

7
}
8

9
void Test1_Loop (void) {
10

11
}

Datei "Test1.h"
1
#include <ESP8266WiFi.h>
2
extern WiFiServer MyServer;
3

4
void Set_WiFi (void);
OP #7074582
Lesenswert?
• ▲
▼
Danke für die Antworten.
Diese haben mein Problem allerdings keiner Lösung zugeführt.
Folgende Fehlermeldungen kommt:

Test_WiFi_V1:3:12: error: redefinition of 'WiFiServer MyServer'
    3 | WiFiServer MyServer(80);
      |            ^~~~~~~~
In file included from 
/Users/###/Documents/Arduino/Test_WiFi_V1/Test_WiFi_V1.ino:1:
/Users/###/Documents/Arduino/Test_WiFi_V1/Test1.h:3:19: note: 
'WiFiServer MyServer' previously declared here
    3 | extern WiFiServer MyServer(80);
      |                   ^~~~~~~~
Bibliothek ESP8266WiFi in Version 1.0 im Ordner: 
/Users/###/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/lib 
raries/ESP8266WiFi   wird verwendet
exit status 1
redefinition of 'WiFiServer MyServer'

PS: Wie kann ich im Text Zeilenumbrüche einfügen?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.