SD Karte "append to file?" Library von Roland Riegel

OP #4514457
Hallo zusammen,

ich mache gerade meine ersten Erfahrungen mit der Library von Roland 
Riegel.

Ich möchte die einen Datenlogger bauen, dafür würde ich gerne an eine 
bestehende Datei einen pro Aufruf einen Datensatz anhängen. Im Prinzip 
suche sich das Pandon zum ">>" Streaming Oparator in der bash.

Momentan kann sieht mein (noch recht primitiver) Code so aus:
1
  sd_raw_init();
2
  struct partition_struct* partition = partition_open(sd_raw_read, sd_raw_read_interval, sd_raw_write, sd_raw_write_interval, 0);
3
  struct fat_fs_struct* fs = fat_open(partition);
4

5
  struct fat_dir_entry_struct directory;
6
  fat_get_dir_entry_of_path(fs, "/", &directory);
7
  struct fat_dir_struct* dd = fat_open_dir(fs, &directory);
8

9
  const char filename[10] = {'D', 'A', 'T', 'A', '.', 'T', 'X', 'T'};
10
  /*
11
  fat_create_file(dd, filename, &directory);
12
  struct fat_file_struct* filehandle;
13
  filehandle = fat_open_file(fs, &directory);
14
  char sdbuffer[6] = "huhu";
15
  fat_write_file(filehandle, sdbuffer, 4);
16
  */
17

18
  struct fat_file_struct* filehandle = open_file_in_dir(fs, dd, filename);
19
  char sdbuffer[6] = "bubu";
20
  fat_write_file(filehandle, sdbuffer, 4);
21
  sd_raw_sync();


Die Karte und der Code funktioniert im prinzip, ich kann entweder eine 
neue Datei "DATA.TXT" anlegen und "huhu" reinschreiben, oder in eine 
exisitierende Date "bubu" schreiben. Leider entspricht das Verhalten dem 
">" Operator (der Inhalt der Datei wird gelöscht und dann neu 
beschrieben).

Gibts da n Trick? Ich bin sicher nicht der erste, der "appenden" 
möchte...

Gruß und Danke
Schorsch
OP #4514539
Habs selbst herausbekommen:
1
  struct fat_file_struct* filehandle = open_file_in_dir(fs, dd, filename);
2
  int32_t offset = 0;
3
  fat_seek_file(filehandle, &offset, FAT_SEEK_END);
4
  char sdbuffer[6] = "bubu";
5
  fat_write_file(filehandle, sdbuffer, 4);
6
  sd_raw_sync();

das "fat_seek_file" verändert "filehandle". Durch die Benennung 
FAT_SEEK_END wird explizit das Ende der Datei "aufgesucht". Danach 
entspricht, so wie ich das verstehe der "fat_write_file" Befehl einem 
append

Gruß Schorsch
Gast #4514591
Georg T. schrieb:
> das "fat_seek_file" verändert "filehandle". Durch die Benennung
> FAT_SEEK_END wird explizit das Ende der Datei "aufgesucht".

Deine Formulierungen sind etwas "eigenwillig".
filehandle ist ein Pointer auf eine fat_file_struct. An dem Pointer 
wird gar nichts verändert.
Das Argument FAT_SEEK_END für das Positionierkommando fat_seek_file 
sagt, das sich der Offset (=0), auf den im Kommando verwiesen wird, auf 
das Fileende bezieht.
http://www.roland-riegel.de/sd-reader/doc/group__fat__file.html#gad4c305cf004bae9bea48730ed20c87ec

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.