Hallo zusammen,
ich habe hier ein kleines Projekt, wo ich über ein Ethernet-Shield auf eine SD-karte schreibe. Karte wird problemlos initialisiert, Dateien erstellt, und auch der TestText den ich reinschreibe in die Datei geschrieben. Nun versuche ich, diesen Text wieder auszulesen und dann in eine Variable zu schreiben. Und gneau hier hapert es.
Wenn ich über die folgen Prozedur
boolean writeTextToFile(const char* filename, char* inhalt)
{
int bytesWritten = 0;
myFile = SD.open(filename, FILE_WRITE);
bytesWritten = myFile.write(inhalt);
myFile.close();
if (bytesWritten > 0) { return true; } else { return false; }
}
mittels
writeTextToFile("dummy.txt","Dummy-Zeile");etwas schreiben lasse, dann steht in der Datei auch die gewünschte Zeile (habe die Karte über einen SD-Reader an meinem PC ausgelesen.
Die read() Anweisung liest, soweit ich das richtig verstanden habe byte fuer byte ein, daher versuche ich mittels
char* readFromFile(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 (buffer);
}
return 0; // Fehler: Datei nicht gefunden
}
die Datei wieder auszulesen.
Lasse ich das Erhaltene in meinem LCD Anzeigen steht dort tatsächlich die vorher geschrieben Zeile.
lcd.print(readFromFile("testdat.txt"));Wenn ich aber diese Zeile teste
if (readFromFile("testdat.txt") == "Dummy-Zeile")erhalte ich ein false.
Warum?
Danke schon mal für alle Hinweise
Steve