Forum: Mikrocontroller und Digitale Elektronik FatFs länge einer Datei nach µC Reset


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von martn (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe FatFs am laufen und versuche nun damit klar zu kommen.
http://elm-chan.org/fsw/ff/00index_e.html

Mein Problem ist gerade folgendes.

Ich kann eine Datei "Test.txt" erstellen und darin z.b. den String 
"12345" ablegen und die Datei ordnungsgemäß schließen.
Wenn der µC aus dem Reset kommt, will ich in die Datei "Test.txt" 
weitere Zeichen ablegen. Also z.B. "6789".
Diese sollen aber nicht die alte Information überschreiben sondern es 
soll angehängt werden. Ich muss also wissen, wie viele Zeichen sich in 
der Datei "Test.txt" befinden und kann dann "FIL* fp" manipulieren, 
damit an der richtigen Stelle weiter geschrieben wird.

Da diese Datei "Test.txt" bei momentaner Überlegung sehr groß werden 
kann,
macht es keinen Sinn, diese in einen Buffer des µC auszulesen.

Meine aktuelle Lösung ist eine separate zweite Datei anzulegen und darin 
z.B. die Informationslänge in der "Test.txt" abzulegen.

Bietet die FatFs eine bessere Möglichkeit?

von holger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Ich muss also wissen, wie viele Zeichen sich in
>der Datei "Test.txt" befinden

Nein musst du nicht.

>Bietet die FatFs eine bessere Möglichkeit?

Ja, f_open mit FA_OPEN_APPEND benutzen.

von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Datei mittels f_open() und Flag FA_OPEN_APPEND öffnen, siehe

http://elm-chan.org/fsw/ff/doc/open.html

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
1
fseek(fp, 0, SEEK_END);

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Und um dann noch die Dateigröße zu ermitteln (um beispielsweise zu 
entscheiden, die Datei dann doch nicht zu verlängern) dient f_size.

von martn (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten.

Leider unterstützt cubeMX die FatFs Version R0.13 für meinen STM32f4 wie 
es aussieht noch nicht.
CubeMX bindet die Version R0.11 ein und die unterstützt "FA_OPEN_APPEND" 
noch nicht.

Somit, da ich selber die cubeMX HAL und die FatFs nicht gescheit 
verbinden kann, habe ich untenstehende Lösung gewählt.

Wenn mir jemand vermitteln kann, wie ich oben genannte Verbindung 
manuell umsetzen kann, würde ich gerne auf die aktuelle Version R0.13 
der FatFs wechseln.
1
res = f_open(&myFile, "TEST3.TXT", FA_OPEN_ALWAYS | FA_WRITE);
2
if (res != FR_OK)
3
{
4
   // Fehler beim Erstellen oder Öffnen der Datei
5
6
}
7
8
int ret;
9
    
10
res = f_lseek(&myFile, f_size(&myFile));
11
12
ret = f_puts("Hallo1", &myFile);
13
ret = f_puts("Hallo2", &myFile);
14
ret = f_puts("Hallo3", &myFile);
15
16
f_close(&myFile);  // Schliessen der Datei

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Ich hätte einfach die ff.c und ff.h im Projekt mit den R0.13 Versionen 
überschrieben, fertich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.