Vinculum 2: wie auf Unterordner zugreifen (FAT)?

Gast #3390614
Lesenswert?

Hallo,

ich versuche mit dem Vinculum 2 von FTDI ein portables Gerät zu 
entwickeln, welches mir erlaubt Daten ohne PC von einem USB-Stick auf 
einen anderen zu kopieren. Das Kopieren funktioniert soweit, jedoch nur 
wenn sich die Dateien nicht in einem Unterordner befinden.
Jetzt versuche ich den Unterordner mit der Funktion 
fat_dirChangeDir(...) zu öffnen, jedoch findet er ihn dann nicht, 
wodurch ich auch nicht auf die Dateien darin zugreifen kann.
Ich habe den Code so aus dem User Guide (AN_151) für den Chip entnommen, 
aber nicht zum laufen gekriegt.
Der Return-Wert ist immer FAT_NOT_FOUND.
1
char dirName[11] = "ORDNER1    "; // Name des Ordners im 8.3 Format
2
if (fat_dirEntryIsDirectory(&fileToCopy) == 1) // Abfrage ob Directory
3
{
4
     fat_dirChangeDir(fatContext1, dirName);
5
}

Kann mir dabei jemand weiterhelfen?

Liebe Grüße
Hiasnchri
Persönliche Seite #3393546
Lesenswert?

hiasnchri schrieb:
> und dirName ist ein char[11]-Array

Ein bisschen kurz, oder?

Dos-Dateinamenskürzel können 12 Zeichen (8, Punkt, 3) lang werden - und 
in C gehört dann noch eine abschließende \0 dazu, also sollte das Array 
Platz für 13 Zeichen bieten.

Sollte die FAT-API des Vinculum den Punkt unterschlagen, sind immer noch 
12 Zeichen im Array erforderlich.


> char dirName[11] = "ORDNER1    "; // Name des Ordners im 8.3 Format

Wird in der API gefordert, kürzere Dateinamen mit Leerzeichen 
aufzufüllen?

Was geschieht hierbei?
1
char dirName[] = "ORDNER1";
Gast #3395305
Lesenswert?

Das mit der Länge des Arrays war es, hätte mir eigentlich bewusst sein 
sollen. Mit 12 funktioniert es einwandfrei. Die API unterdrückt den 
Punkt und nimmt einfach die letzten drei Zeichen als Dateiendung. 
Erstaunlicherweise werden sogar .docx, .pptm und deren Freunde von 
Microsoft richtig kopiert. Sie heißen dann zwar nur noch .doc, .ppt, 
etc. haben aber noch die selbe Funktionen wie die ursprünglichen Dateien

Rufus Τ. Firefly schrieb:
> Wird in der API gefordert, kürzere Dateinamen mit Leerzeichen
> aufzufüllen?

Ich habe den Dateinamen sicherheitshalber mit Leerzeichen gefüllt. Was 
ohne sie passiert weiß ich nicht, werde ich aber demnächst noch 
probieren.
Gast #3398576
Lesenswert?

hiasnchri schrieb:
> Ich habe den Dateinamen sicherheitshalber mit Leerzeichen gefüllt. Was
> ohne sie passiert weiß ich nicht, werde ich aber demnächst noch
> probieren.

Aber eigentlich ist es für mein Projekt gar nicht relevant, da nicht ich 
den Namen eingebe, sondern der Controller ihn selbst ausliest und 
weiterverwendet. Jedenfalls funktioniert es jetzt :)

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