Buongiorno ragazzi,
sto cercando di capire come funziona la lettura di un file da SD.
Quello che vorrei fare è leggere solo alcune stringhe da un file allocato su una SD. Ho cercato nel forum alcune discussione per la lettura dei file e sono riuscito ad arrivare al seguente codice
#include <SPI.h>
#include <SD.h>
File myFile;
char indiciPerFile[] = {'I', 'U', 'P'};
char c;
String inString = "";
boolean startRead = false;
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
myFile = SD.open("file.txt");
if (myFile) {
while (myFile.available()) {
for (byte x = 0; x < sizeof(indiciPerFile); x++) {
while (c != -1) {
c = myFile.read();
if (c == indiciPerFile[x]) {
startRead = true;
}
if (!myFile.available()) break;
if (startRead == true) {
inString += c;
}
if (c == '\n') startRead = false;
}
Serial.println(inString); //debug
inString = "";
}
}
myFile.close();
}
}
void loop() {
}
il file .txt contiene il seguente contenuto:
Ingressi: 0_0_0_0_0_0
Uscite: 0_0_0_0_0_0
Analogica: 0_0_0
Gradi: 00_00
Puntatore: 0
Io vorrei leggere solo 3 di queste stringhe e per farlo ho usato un ciclo for, ma mi viene restituita solo la prima stringa. Il ciclo for avanza nel conteggio (ho provato a stampare s con la seriale) ma sembra che il puntatore "c" quando arriva alla fine del file non torna a leggere dall'inizio il file .txt
Questo è quello che mi viene stampato
Ingressi: 0_0_0_0_0_0
La cosa strana è che se nel file txt inserisco più stringhe che iniziano con 'I' mi vengono restituite tutte, quindi in teoria il puntatore "c" torna a leggere il file dall'inizio.
le stringhe che a me servono sono contenute in "char indiciPerFile[]".
Qualcuno sa darmi una dritta?