ja, das geht davon aus dass in der ganzen Datei nur eine einzige Zahl steht.
Zeilenweise lesen geht, indem man das jeweils gelesene Zeichen prüft, ob es ein Zeilen-Ende ist
static const int BUFSIZE=50;
static char buffer[BUFSIZE];
char* readLineFromFile(File myFile)
{
// myFile muss erfolgreich geöffnet sein
int pos=0;
// read from the file until line end
while (myFile.available() && pos < (BUFSIZE-1)) {
char c = myFile.read();
if (c != '\n') // kein Zeilen-Ende
{
buffer[pos++] = c; // Zeichen merken
}
else break; // Zeilenende wie Dateiende behandeln
} // end while
buffer[pos]=0; // EndeKennung
return buffer;
}
wenn Ich char zelle1 = readLineFromFile();
bekomme Ich folgende Fehlermeldung
sketch_mar16a.ino: In function 'int Stundenaufsdlesen()':
sketch_mar16a:7: error: too few arguments to function 'char* readLineFromFile(File)'
sketch_mar16a:52: error: at this point in file
#include <SD.h>
File myFile; // fuersd karte
static char filename[41] = ("140315-1.TXT");
static char datensatz[41];
static const int BUFSIZE=50;
static char buffer[BUFSIZE];
void setup(){
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Serial.println("Initializing SD card...");
}
void loop(){
Stundenaufsdlesen();
}
int Stundenaufsdlesen()
{
// re-open the file for reading: pv1
myFile = SD.open(filename);
if (myFile) {
Serial.println(filename); //dateiname"test.txt:"
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
char zelle1 = readLineFromFile();
}
// close the file:
myFile.close();
}
else {
// if the file didn't open, print an error:
Serial.println(filename);
}
}
char* readLineFromFile(File myFile)
{
// myFile muss erfolgreich geöffnet sein
int pos=0;
// read from the file until line endthere's nothing else in it:
while (myFile.available() && pos < (BUFSIZE-1)) {
char c = myFile.read();
if (c != '\n') // kein Zeilen-Ende
{
buffer[pos++] = c; // Zeichen merken
}
else break; // Zeilenende wie Dateiende behandeln
} // end while
buffer[pos]=0; // EndeKennung
return buffer;
}
juergen01:
wenn Ich char zelle1 = readLineFromFile();
bekomme Ich folgende Fehlermeldung
sketch_mar16a.ino: In function 'int Stundenaufsdlesen()':
sketch_mar16a:7: error: too few arguments to function 'char* readLineFromFile(File)'
sketch_mar16a:52: error: at this point in file
Na dann ist ja alles in bester Ordnung!
Du rufst die Funktion OHNE PARAMETER auf:
char zelle1 = readLineFromFile();
Aber die Funktionsdeklaration besagt, dass Du das FILEHANDLE ALS PARAMETER an die Funktion übergeben sollst:
char* readLineFromFile(File myFile)
Richtigerweise lautet die Fehlermeldung daher:
too few arguments to function 'char* readLineFromFile(File)'
Exakter und genauer geht es bei so einer offensichtlich provozierten Fehlermeldung nun wirklich nicht!