Salve a tutti.
Ho un problema con un Wemos D1 mini collegato ad un lettore SD.
In breve quando vado a scrivere una stringa questa viene sempre sovrascritta da quella successiva.
Ora non capisco dove sta il problema. Grazie a chiunque mi risponderà.
void writeFile(String type){
tft.endWrite();
String message = "CODICE = " + String(pw) + " " + String (type) + " " + String(data());
if(!SD.begin(2)){
Serial.println("Card Mount Failed");
}else {
Serial.print("CARDA MONDADA\n");
Serial.printf("Writing file: log.txt \n");
File file = SD.open("/log.txt", FILE_WRITE);
if(!file){
Serial.println("Failed to open file for writing");
return;
}
if(file.print(message)){
Serial.println("File written");
} else {
Serial.println("Write failed");
}
file.close();
}
tft.begin();
}
Prova a ridefinire FILE_WRITE in questo modo dopo aver incluso la libreria
#undef FILE_WRITE
#define FILE_WRITE (sdfat::O_READ | sdfat::O_WRITE | sdfat::O_CREAT | sdfat::O_APPEND)
ma dovrebbe essere già così definito, nella SD.h
e comunque non mi spiego varie cose
ma tanto non bado a problemi di chi usa la classe string
In effetti...
Magari ha qualche vecchia versione?
e poi la "serial.printf("
cosa sta a significare?
Nel core ESP8266 e ESP32 la printf dovrebbe esserci (se non mi sbaglio)
Ah
Non sapevo
E adesso mi viene anche in mente che l'anno scorso abbiamo scoperto una qualche differenza nella gestione dei file su SD...
Non ricordo bene, adesso cerco...
Sono rimasugli di c che ogni tanto scappano ahahaha
sì, capisco, capita anche a me
ma la domanda è: compila?
Per compilare compila , ed esegue tutto correttamente solo che ogni volta mi va a sovrascrivere la stringa sul file invece che aggiungerla.
trovato qualcosa
diversa apertura
in effetti mi sa che devo prendere le pastiglie per la memoria
lo avevo già dimenticato una volta...
Niente ho aggiunto il codice ma non è cambiato nulla .
Quindi se ho capito bene dovrei sostituire FILE_WRITE con O_RDWR ?
Si
E siccome un messaggio deve contenere almeno tre caratteri mi ripeto:
Si
Da questo errore :
'O_RDWR' was not declared in this scope; did you mean 'sdfat::O_RDWR'
Io so di una funzione tipo "append" ma non ho ben capito cosa faccia. C'entra qualcosa?
on è una funzione, ma un modo di apertura file
ed è O_RDWR...
Ah ho capito.
Continuerò a cercare , ma trovo solo persone che hanno il problema opposto al mio.