ich möchte 4 Strings in einer Datei speichern und auslesen, der Compiler läuft durch aber der ESP32 crasht sobald die Datei geschrieben wurde und er diese auslesen soll.
"Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled."
Wenn ich die Datei manuell mit einem \r am Zeilenende erzeuge, dann liest er diese auch aus ohne zu crashen, bei \n crasht er. Ich denke also, dass die Funktion zum schreiben \r\n am Ende der Zeilen erzeugt. Wie verhindere ich dies?
// For reading strings on spiffs on startup
void readfiles() {
char buffer[64];
int i = 0;
// 0
File file0 = SPIFFS.open("/LED0.txt", "r");
while (file0.available()) {
int l = file0.readBytesUntil('\r', buffer, sizeof(buffer));
buffer[l] = 0;
if (i == 0) {
lastsbd0 = buffer;
}
if (i == 1) {
lastdguv0 = buffer;
}
if (i == 2) {
ticket0 = buffer;
}
if (i == 3) {
bemerkung0 = buffer;
}
i++;
if (i == 4) {
break;
}
}
file0.close();
}
// For updating file on spiffs
void updatefile() {
if (editbs == "0") {
File datei0 = SPIFFS.open("/LED0.txt", FILE_WRITE);
if (datei0.println(lastsbd0) + "\r") {
Serial.println("File was written");;
} else {
Serial.println("File write failed");
}
datei0.close();
File datei0a = SPIFFS.open("/LED0.txt", FILE_APPEND);
if (datei0a.println(lastdguv0) + "\r") {
Serial.println("File content was appended");
} else {
Serial.println("File append failed");
}
datei0a.close();
File datei0b = SPIFFS.open("/LED0.txt", FILE_APPEND);
if (datei0b.println(ticket0) + "\r") {
Serial.println("File content was appended");
} else {
Serial.println("File append failed");
}
datei0b.close();
File datei0c = SPIFFS.open("/LED0.txt", FILE_APPEND);
if (datei0c.println(bemerkung0)) {
Serial.println("File content was appended");
} else {
Serial.println("File append failed");
}
datei0c.close();
}
}
println() fügt automatisch "\r\n" für Sie hinzu
Verwenden Sie einfach print(), wenn Sie dies nicht möchten
Dieser Code hat keine Bedeutung if (datei0a.println(lastdguv0) + "\r") println() gibt die Anzahl der Bytes zurück, die geschrieben wurden und Sie fügen einen Pointer hinzu...
Vielleicht, damit dein Programm nicht im Fehlerfall mit "Guru Meditation Error: Core 1 panic'ed" abschmiert.
Natürlich könntest du auch die Exception fangen.
// For updating file on spiffs
void updatefile() {
if (editbs == "0") {
File datei0 = SPIFFS.open("/LED0.txt", FILE_WRITE);
if (!datei0) {
Serial.println("file open failed");
return;
}
datei0.print(lastsbd0);
datei0.write('\r');
datei0.close();
File datei0a = SPIFFS.open("/LED0.txt", FILE_APPEND);
if (!datei0a) {
Serial.println("file open failed");
return;
}
datei0a.print(lastdguv0);
datei0a.write('\r');
datei0a.print(ticket0);
datei0a.write('\r');
datei0a.print(bemerkung0);
datei0a.close();
}
}
void readfiles() {
char buffer[64];
int i = 0;
// 0
File file0 = SPIFFS.open("/LED0.txt", "r");
if (!file0) {
Serial.println("file open failed");
return;
}
while (file0.available()) {
int l = file0.readBytesUntil('\r', buffer, sizeof(buffer));
buffer[l] = 0;
if (i == 0) {
lastsbd0 = buffer;
}
if (i == 1) {
lastdguv0 = buffer;
}
if (i == 2) {
ticket0 = buffer;
}
if (i == 3) {
bemerkung0 = buffer;
}
i++;
if (i == 4) {
break;
}
}
file0.close();
Decoding 11 results
0x400d197b: calculatedays() at C:\Users\Daniel\Documents\Arduino\libraries\FastLED\src/controller.h line 171
0x400d1c3a: colorleds() at C:\Users\Daniel\Documents\Arduino\libraries\FastLED\src/controller.h line 171
0x400d27ea: setup() at C:\Users\Daniel\Documents\Arduino\libraries\FastLED\src/controller.h line 171
0x400dcfa6: loopTask(void*) at C:\Users\Daniel\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5\cores\esp32/main.cpp line 37
0x40089c66: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 355 (discriminator 1)
Ein String, welcher eine Zahl aus einer GET Request speichert.
// GET editid value on <ESP_IP>/get?editid=<editid>
if (request->hasParam(editid)) {
editbs = request->getParam(editid)->value();
}
updatefile();
Wenn ich mein Spiffs Dateisystem zurücksetzte, dann stürzt der ESP32 auch nicht ab. Er stürzt ab sobald ich die Datei erzeugt habe und er diese einlesen will.