Frage zu SD Byteweise auslesen

Hallo Zusammen

Habe eine SD Byteweise auslesen

Wie gelesen habe kann man sie nicht Zeilenweise auslesen

Ich habe in meiner Datei aus cd ca 200 Datensaetze a 22 Zeichen

jetzt moechte Ich sie in einen Chararray einzeln Einlesen und bearbeiten

Habe folgende Funktion von michael_x gefunden
aber Ich glaube er liest nur einen String ein

static const int BUFSIZE=50;
static char buffer[BUFSIZE];
int readIntFromFile(const char* filename) 
{
   int pos=0;
   myFile = SD.open(filename);
   if (myFile) {
      // read from the file until there's nothing else in it:
      while (myFile.available() && pos < (BUFSIZE-1)) {
    	buffer[pos++] = myFile.read();
      }
      myFile.close();
      buffer[pos]=0; // EndeKennung 
      return (atoi(buffer));
  
  }
  return 0; // Fehler: Datei nicht gefunden

bye juergen

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;
}

Hallo Zusammen
Hallo michael_x

Noch mal eine Frage
wie rufe Ich das denn auf

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;
}

bye juergen

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!

char zelle1 = readLineFromFile();

enthält noch einen weiteren Fehler...

machs lieber so ...
char* zeile = readLineFromfile(MyFile);
serial.println(zeile);

Hallo Zusammen

Hallo juri ich Danke dir

Hallo michael_x

Klappt Super deine Loesung ist die bessere

bye juergen