Wenn ich eine FlashStringHelper Funktion einsetze, funktioniert es:
String s = (const __FlashStringHelper*) Main_page;
Warum weiß ich allerdings nicht wirklich
Ich fand noch dies: https://arduino-esp8266.readthedocs.io/en/latest/PROGMEM.html
" To retrieve and manipulate flash strings they must be read from flash in 4byte words. In the Arduino IDE for esp8266 there are several functions that can help retrieve strings from flash that have been stored using PROGMEM. Both of the examples above return const char * . However use of these pointers, without correct 32bit alignment you will cause a segmentation fault and the ESP8266 will crash. You must read from the flash 32 bit aligned."
Ich denke damit hängt es zusammen
Und ich dachte wirklich, dass dies der einfachste Weg für einen Anfänger sei
Es tut mir leid, das zu sagen, aber es ist keine Funktion, sondern ein Cast.
Aber ich!
Du teilst der String Instanz damit mit, dass der Pointer ins Flash zeigt, und nicht ins RAM. Dem nackten Pointer ist das nämlich nicht anzusehen.
Eine Frage noch bitte:
So wie ich es verstehe wird ja durch PROGMEM mein Char Array ins Flash geschoben und dann temporär in den String geschrieben.
Macht das beim ESP überhaupt Sinn?
Ich könnte ja auch (wie schon probiert) die Seite direkt als String im RAM deklarieren.
Ich bin nur unsicher wegen der RAM Fragmentierung und ob das negative Auswirkungen hat im Dauerbetrieb.
z.B. wer Angst vor Fragmentierung hat, sollte auf die String Klasse verzichten. Aber das tust du in beiden Fällen nicht.
Dann:
Die Zeichenkette muss ja irgendwo liegen um einen PowerDown zu überleben.
Also im Flash. Da liegt sie sowieso.
Dann kommst du mit deinem PROGMEM ins Spiel.
Verwendest du PROGMEM, ist sie im Flash, bis du sie da raus holst und ins RAM kopierst.
Verwendest du kein PROGMEM, wird sie beim Systemstart sowieso ins RAM Kopiert. Und dann nochmal in die String Instanz. Die Zeichenkette liegt dann doppelt im RAM und einmal im Flash.
Du kannst dir also aussuchen, ob sie 3 mal deinen Speicher verbrauchen soll, oder nur 2 mal.
Und welche Geister du bei deinen "negative Auswirkungen im Dauerbetrieb" siehst, KA...
Sind halt deine Geister.