ESP8266: IPAdress class

OP #7796666

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.

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

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

Eine eigene Frage? Dieser Thread ist über ein Jahr alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.