Forum: Mikrocontroller und Digitale Elektronik ESP32 WiFi begin


von martini2000 (Gast)


Lesenswert?

Hallo zusammen,
ich hab ein kleines Problem mit WiFi.begin
beim ESP32
Diese Zeilen funktionieren einwandfrei:
const char* ssid     = "FRITZ!Box 7490";
const char* password = "123456789";
....
WiFi.config(local_IP, gateway, subnet);
WiFi.begin(ssid, password);usw

-----------------------------------------
Wenn ich aber ssid und password als variablen haben
möchte, habe ich bei meheren Foren gelesen dass es
so gehen könnte.
String ssid     = "FRITZ!Box 7490";
String password = "123456789";
WiFi.config(local_IP, gateway, subnet);
WiFi.begin(ssid.c_str(), pw.c_str());
---------
funktioniert aber nicht, was mach ich falsch ??
Vielen Dank für Eure Hilfe im Voraus

von Räusper (Gast)


Lesenswert?

martini2000 schrieb:
> WiFi.begin(ssid.c_str(), pw.c_str());

Sollte das dann besser
1
WiFi.begin(ssid.c_str(), password.c_str());
heißen?

von Deckenleuchte (Gast)


Lesenswert?

(const char*)ssidName.c_str()

Viel Spass!

von martini2000 (Gast)


Lesenswert?

Hallo Deckenleuchte,
vielen Dank für Deinen Hinweis,
ich hab es versucht, macht er aber immer noch nicht.
Im Internet hab ich noch folgendes gefunden
https://forum.arduino.cc/t/issues-with-wifi-begin-and-sting-or-char-variables/600064
Der addiert am Ende des Strings noch ein "/0" dazu
Was hälst Du davon
Gruß Martin

von Mike R. (thesealion)


Lesenswert?

martini2000 schrieb:
> funktioniert aber nicht, was mach ich falsch ??

Als erstes mal sagen, was nicht funktioniert. Gibt es eine 
Fehlermeldung?

von Deckenleuchte (Gast)


Lesenswert?

Hallo Martin,

nicht "\0" sondern '\0', das ist der String Delimiter, der sagt wo ein 
String zu Ende ist.

Der scheint bei dir nicht gesetzt zu sein, obwohl ich erwartet hätte, 
dass die String Klasse sich darum kümmert.

von Johannes S. (Gast)


Lesenswert?

String.c_str() liefert einen nullterminierten C-String zurück, das 
müsste also gleich sein. Liegt es eventuell an der Codierung von 
Sonderzeichen? Oder ist das PW länger als 32 Zeichen?

Edit:
habe es auch mal probiert, funktioniert auch mit String.

von Max (Gast)


Lesenswert?

martini2000 schrieb:
> String password = "123456789";           Wieso steht hier passwort
> WiFi.config(local_IP, gateway, subnet);
> WiFi.begin(ssid.c_str(), pw.c_str());    Und hier nur pw?

von Stefan F. (Gast)


Lesenswert?

Max schrieb:
> Wieso steht hier passwort ... Und hier nur pw?

Wahrscheinlich weil er wie üblich nicht den Quelltext zeigt, zu dem er 
Hilfe haben will.

von Veit D. (devil-elec)


Lesenswert?

martini2000 schrieb:
> Hallo zusammen,
> ich hab ein kleines Problem mit WiFi.begin
> beim ESP32
> Diese Zeilen funktionieren einwandfrei:
> const char* ssid     = "FRITZ!Box 7490";
> const char* password = "123456789";
> ....
> WiFi.config(local_IP, gateway, subnet);
> WiFi.begin(ssid, password);usw

Hallo,

du hast schon deine Variablen mit
1
const char* ssid     = "FRITZ!Box 7490";
2
const char* password = "123456789";
Nur das 'ssid' und 'password' mittels 'const' konstant sind. Beides sind 
Zeichenketten. Wenn du diese veränderbar haben möchtest nimmste 'const' 
weg. Zuweisungen zur Laufzeit können dann mittels strcpy oder besser 
strncpy gemacht werden. Dafür sollte/muss die max. Länge vorher 
festgelegt werden. Array statt Zeiger. Oder legst neue Variablen nach 
gleichen Schema nur mit anderen Namen an. Je nachdem was du genau machen 
möchtest.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.