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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren