Forum: Mikrocontroller und Digitale Elektronik ESP8266: IPAdress class


von Bot N. (botnec)


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.

: Bearbeitet durch User
von N. M. (mani)


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.

von Oliver S. (oliverso)


Lesenswert?

Oder einfach hiermit:
1
 // Overloaded index operator to allow getting and setting individual octets of the address
2
  uint8_t operator[](int index) const;
3
  uint8_t &operator[](int index);

Oliver

von N. M. (mani)


Lesenswert?

Oliver S. schrieb:
> Oder einfach hiermit:

Stimmt 😁 übersehen

von Bot N. (botnec)


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.

: Bearbeitet durch User
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.