ESP8266: IPAdress class

OP #7796666
Lesenswert?

Ich benutze eine 8266 und möchte die WiFi Einstellungen in das interne EEPROM ablegen und von dort dann auch wieder auslesen.

Im Code unter PlatformIO wird die class IPAddress benutzt. z.B. IPAddress ipa(192,168,0,25);

Damit ich die IP ins EEPROM schreiben kann, muss man meines Wissens byteweise schreiben. Mein Problem ist jetzt wie kann man denn IPAddress in 4 Bytes zerlegen oder umgekehrt aus 4 Byte eine IPAddress machen?

Wenn ich ipa als Array behandle , meckert der Compiler zwar nicht, aber ich bekomme auch keine vernünftiges Ergebnis. Irgendwas mit (IP unset) beim Versuch aus 4 Byte eine IPAddress zu machen.

Kann man das irgendwie casten ?

Wäre für Hilfe dankbar.

#7796678
Lesenswert?

Ich gehe davon aus: https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/IPAddress.h

Um Daten aus der Klasse IPAddress raus zu bekommen sehe ich mindestens 2 Möglichkeiten. Einmal der überladene Operator, der geht aber scheinbar nur bei IPv4:

1
const uint32 tmpU32Adr=YourIPClass;

oder

1
String tmpStringIp=YourIPClass.toString();

Das dann zerlegen in Bytes und speichern.

Zurück dann wieder über die Konstruktoren der Klasse:

1
IPAddress(uint32_t address);
2
IPAddress(const char *address);

Je nach Lib für die Speicherung könnte ich mir aber vorstellen dass das schon die Klasse für dich übernehmen kann.

OP #7796871
Lesenswert?

Danke für die Tips. Aber ich habe was übersehen, falls jemand ein ähnliches Problem hat.

(IP unset) heißt nur dass alle 4 Byte 0xFF sind.

Man kann bei mir z.B. IPAddress ipa(192,168,0,25) schon als einfaches Array behandeln und ipa einfach so wie bei Arrays üblich zerlegen bzw. zusammenbauen.

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