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

OP #4514457
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren