Forum: Mikrocontroller und Digitale Elektronik ElmChan LFN f_open


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 andre (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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);

von Kristallkugel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Layer 8 Fehler in Zeile 42.

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


Bewertung
0 lesenswert
nicht lesenswert
Die Funktion f_open hat einen Rückgabewert, den Du einer Variablen "res" 
zuweist.

Was steht denn da drin?


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

von andre (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von andre (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn der Filename zb uartcfg.txt also 8.3 dann kann ich es öffnen

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


Bewertung
0 lesenswert
nicht lesenswert
Na, dann scheinen Deine drei Zeilen wohl nicht die gewünschte Auswirkung 
zu haben.

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
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.

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


Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:
> OEM Page 850 (Latin1)

Pedanterie:
850 ist nicht "Latin1", sondern eine leicht angepasste Variante der 
alten "DOS"-Codepage 437. "Latin1" ist 1252.

von Kai (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Vollständiges Programm?

Da fehlt doch mindestens noch ein fmount? Und diskinitialize?

Gruß

von M. H. (bambel2)


Bewertung
0 lesenswert
nicht lesenswert
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

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.