ElmChan LFN f_open

Gast #5113143
Hallo,
Ich Arbeite mit der FatFs Lib von ElmChan les funktioniert.

So wenn ich aber ein Textfile öffnen möchte "uartconfig.txt" wird die 
Datei nicht geöffnet.

kann mir einer weiterhelfen.
mfg
1
 char by;
2
 char rw_buffer[30];
3
 char rw_data[11]; 
4

5
 UINT br;         // File write count 
6
 FIL fsrc;        // file objects
7
 FRESULT res;     // FatFs function common result code
8

9

10
 static char lfn[_MAX_LFN + 1];
11
 fno.lfname = lfn;
12
 fno.lfsize = sizeof lfn;
13

14
res = f_open(&fsrc, "uartconfig.txt" ,   FA_OPEN_EXISTING | FA_READ);
Gast #5113187
Rufus Τ. F. schrieb:
> Die Funktion f_open hat einen Rückgabewert, den Du einer Variablen
> "res" zuweist.
>
> Was steht denn da drin?
Da steht drin das das File nicht gefunden wurde.

>
> Und welche Bedeutung sollen die drei Codezeilen vor dem Aufruf von
> f_open haben?

Damit ist denn LFN Active
Gast #5113407
andre schrieb:
>>
>> Und welche Bedeutung sollen die drei Codezeilen vor dem Aufruf von
>> f_open haben?
>
> Damit ist denn LFN Active

Nein.
LFN aktiviert man in der ffconf.h.

Die Struktur fno ist wahrscheinlich eine FILE info struct (selber 
Variablenname wie in allen Beispielen). Die hat damit nichts zu tun. Was 
soll das schreiben einer zufälligen Struktur auch bringen.


Bei mir steht in der ffconf.h:
1
#define _CODE_PAGE  850
2
#define  _USE_LFN  1
3
//  0: Disable support of LFN. _MAX_LFN has no effect.
4
//   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
5
//   2: Enable LFN with dynamic working buffer on the STACK.
6
//   3: Enable LFN with dynamic working buffer on the HEAP.
7
#define  _MAX_LFN  255
8
#define  _LFN_UNICODE  0

Ohne unicode mit OEM Page 850 (Latin1) und statischem working buffer 
gehts bei mir.
Gast #5114487
Rufus Τ. F. schrieb:
> Pedanterie:
> 850 ist nicht "Latin1", sondern eine leicht angepasste Variante der
> alten "DOS"-Codepage 437. "Latin1" ist 1252.

Ja. Das war mir immer relativ egal, solange alles funktioniert hat.
<offtopic>
Wenn man in Japan ein Windowssystem benutzt, sind alle Backslashes in 
den Pfaden durch Yen-Zeichen ersetzt. Aber wenn man das Yen-Zeichen 
manuell eingibt, ist das ein anderes Unicodezeichen. Und alle leben 
damit, dass das System von Natur aus "broken" ist. Unglaublich...
</offtopic>

Kai schrieb:
> Da fehlt doch mindestens noch ein fmount? Und diskinitialize?
Pedanterie:
disk_initialize wird von f_mount ausgeführt. Hierarchisches Design und 
so...

Wenn er sich nicht mehr meldet, hat er die Lust verloren oder es geht 
jetzt :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.