(ESP8266) EEPROM Speichernutzung: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
Zeile 6: Zeile 6:
 
<span style="color:red">FEHLER!!!</span>
 
<span style="color:red">FEHLER!!!</span>
  
<span color='red'>VVVVVVVV</span>
+
<span style="color:red">VVVVVVVV</span>
  
 
<pre>
 
<pre>
Zeile 17: Zeile 17:
 
} settings;
 
} settings;
 
>/pre>
 
>/pre>
 +
 +
<span  style="color:red">^^^^^^^</span>
 +
<span style="color:red">FEHLER!!!</span>
  
 
Nachdem ich Die Markierung vom Typ 'const char*' gegen byte ASCIICode ausgetauscht hatte lief das Programm so wie erwartet.
 
Nachdem ich Die Markierung vom Typ 'const char*' gegen byte ASCIICode ausgetauscht hatte lief das Programm so wie erwartet.

Version vom 19. August 2022, 19:09 Uhr

Hier nur ein kleiner Reminder. Bei Gelegenheit will ich hier noch ein paar Testproggies auflisten.

EEPROM.put und EEPROM.get kommen scheinbar mit Strings nicht zurecht. In einem meiner Programme habe ich KonfigurationsVariablen im EEPROM abgelegt. Die Struktur in der die Variablen abgelegt waren enthielt auch einen String, bzw. Character vom Typ 'const char*'. Das Programm kam damit nicht ueber das EEPROM.begin hinweg und verfing sich in einer Dauerbootschleife.

FEHLER!!!

VVVVVVVV

struct EEPROMValues{ // use a struct to store and retrieve to/from EEPROM
  const char* mark="#"; // Before C++11, members of a struct could not be default initialized. Instead they must be initialized after an instance struct is created.
  //EEPROMValues() : str("\0"){}
  unsigned long timeActiveDir1; // Seconds aktive till relaisstate[] back to {false,false}
  unsigned long timeActiveDir2; // Seconds aktive till relaisstate[] back to {false,false}
  unsigned long checksum;
} settings;
>/pre>

<span  style="color:red">^^^^^^^</span>
<span style="color:red">FEHLER!!!</span>

Nachdem ich Die Markierung vom Typ 'const char*' gegen byte ASCIICode ausgetauscht hatte lief das Programm so wie erwartet.

<pre>
struct EEPROMValues{ // use a struct to store and retrieve to/from EEPROM
  byte mark = 34;
  unsigned long timeActiveDir1; // Seconds aktive till relaisstate[] back to {false,false}
  unsigned long timeActiveDir2; // Seconds aktive till relaisstate[] back to {false,false}
  unsigned long checksum;
} settings;