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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.