Hallo, ich bastel gerade an einem Datenlogger rum. Dieser speichert die gesammelten Daten auf einer SD-Karte in einer Textdatei. Jeder Datensatzt wird in einen Zeile geschrieben. Ich benutze die LIB von Holger Klabunde. Nun würde ich gerne beim wiedereinschalten des Datenloggers die letzte Zeile einlesen und mit diesen Werten weiterarbeiten. Das es sich aber um mehrer Hundtertausend Zeilen handel, kann dauert es sehr lange, die Datei komplett zu lesen. Ich möchte letzten Daten auch nicht im µC speicher, da verschiedenen SD-Karten zum einsatzt kommen und immer mit den jeweileigen Daten gearbeitet werden soll. Gibt es einen Möglichkeit direkt zur letzten Zeile der Datei zu springen? Danke für eure Hilfe! Gruß Mark
>Gibt es einen Möglichkeit direkt zur letzten Zeile der Datei zu >springen? Du könntest es mit Fseek() versuchen. Beispiel: Fseek(-128,SEEK_END); // Gehe zu Dateiende - 128 Bytes Dann wird nicht jeder Sektor bis zum Dateiende gelesen.
>OK. Wo finde ich den die Funktion Fseek()?
Wie alt ist deine Version der LIB? Fseek() ist schon
seit 2007 drin. Gab Anfang dieses Jahres noch einen Bugfix
zu Fseek(). Also zieh dir mal ne neue Version.
OK... wo ist eigentlich U8 usw. und so definiert? Ich verwende immer uint8_t uws.
U8 ist nicht offiziell. Das hat sich wohl jemand in einen privaten Header reingemacht, als die offiziellen unabhängigen Datentypen noch selten benutzt wurden bzw. überhaupt verfügbar waren.
Lang ist's her ... holger schrieb: > Wie alt ist deine Version der LIB? Fseek() ist schon > seit 2007 drin. Gab Anfang dieses Jahres noch einen Bugfix > zu Fseek(). Also zieh dir mal ne neue Version. Ich hab mir die neue Version gezogen. Nun bekomme ich die Meldung:
1 | ../dir.c:171: undefined reference to `ReadSector' |
2 | dir.o: In function `ScanOneDirectorySector': |
Kann es sein, dass die dir.h fehlt? Gruß Mark
Mark schrieb: > Kann es sein, dass die dir.h fehlt? Nö, denn das ist wohl eher eine Meldung des Linkers. Dem interessiert keine .c oder .h Datei etwas. Mir scheint eher, dass eine Objektdatei fehlt, oder dass zumindest die Funktion "ReadSector" nicht gefunden wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.