Forum: Mikrocontroller und Digitale Elektronik Verzeichnisstruktur lesen


von Matthias Kölling (Gast)


Lesenswert?

Hallo,

ich versuche mich nun auch, welche Überraschung, mit einem eigenen 
MP3-Player. Der Grundgedanke ist, die Verzeichnisstruktur auf einer 
SD-Karte zu lesen und in einem File abzulegen. Als Beispiel soll so 
etwas vorhanden sein:
Directory0
 Subdirectory00
  File0
  File1
 Subdirectory01
  File0
  File1
  File2
  File3
Directory1
 Subdirectory10
 Subdirectory11
usw.
Genau so soll es dann auch im List-File stehen. Aber genau da habe ich 
meine Denkblockade. Würde ich ebenenweise scannen, hätte ich keine 
Zuordnung der Files zum Verzeichnis mehr. Würde ich mich von einem 
Verzeichnis beginnend immer so weit nach unten hangeln, bis ich Files 
finde, hätte ich zwar die gewünschte Zuordnung. Ich müßte mich aber 
wieder zurückbewegen und dabei merken, welche Verzeichnisse ich bereits 
bearbeitet habe. Dazu bräuchte ich aber Speicher, den ich nicht habe.
Hat jemand eine Idee, wie man das elegant lösen könnte?

Gruß Matthias

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Willst du das ganze auf dem uC oder dem PC machen ist mir irgenwei aus 
der Frage nicht ganz klar...

von Lothar S. (magic33)


Lesenswert?

das problem kennen wir ja jetz nur die umgebung in der das passieren 
soll ist noch in der Kristallkugel

von holger (Gast)


Lesenswert?

>Würde ich mich von einem
>Verzeichnis beginnend immer so weit nach unten hangeln, bis ich Files
>finde, hätte ich zwar die gewünschte Zuordnung.

Schon da wird es Probleme geben. Verzeichnis und Dateieinträge
können wild durcheinander auf der SD liegen.
Und alphabetisch sortiert ist ebenfalls Glückssache.

von Matthias Kölling (Gast)


Lesenswert?

Würde iich es auf einem Pc machen wollen, hätte ich ja Speicher :)
Nein, die Plattform ist ein 644P. Das meiste des RAMs geht schon für die 
Dateiverwaltung drauf. Sicherlich könnte man mit externem RAM arbeiten. 
Ich habe aber gerade so ein kleines Modul ohne externem RAM. Deshalb kam 
ich auf die Idee, die Liste auf der Karte abzuspeichern. Aber selbst 
wenn ich genug RAM hätte, erscheint mir die Vorgehensweise nicht ganz 
trivial.

Gruß Matthias

von Gast Posti (Gast)


Lesenswert?

Hi

Hatte das zu 286er Zeiten in ASM ungefähr wie folgt gemacht:
1
(00) .
2
(01) 00 File_1_in_Root
3
(02) 00 File_2_in_Root
4
(03) 00 U-Verz_1_von_Root_1
5
(04) 03 File_in_U-Verz_1_von_Root_1
6
(05) 00 File_3_in_Root
7
(06) 03 U-Verz_1.1_von_U-Verz_1
8
(07) 03 File_1_in_Verzeichnis -> root/u-verz-1/
9
(08) 06 File_1_in_Verzeichnis -> root/u-verz_1/u-verz-1.1/
10
...

Die vorderen Zahlen in Klammern entspricht dem Speicherort (bei DOS 
damals war bei 8+3 Zeichen Schluß, konnte man leicht und gleichmäßig im 
SPeicher verteilen) bzw. der Nummer des Datensatz.
Die Zahl dahinter beschreibt, in welchem Verzeichnis der Eintrag liegt, 
erst, wenn wir beim rückwärts gehen auf 00 kommen, ist der Pfad komplett 
zusammen gestellt und das File kann geöffnet werden.
Die Zahl ohne Klammern ist auch das Erste, was im Speicher steht.
Bestimmt nicht optimal, hat damals aber durchaus gereicht (aber kA, was 
ich damit gemacht hatte ...)

Wenn's hilft, bitte :)

MfG

von Benedikt K. (benedikt)


Lesenswert?

Wenn die Reihenfolge beliebig sein darf, dann geht es einfach:
Du brauchst nur eine Funktion die ein Verzeichnis ausliest. Findet diese 
eine Datei, wird der Name in die Liste gespeichert. Findet sie ein 
Verzeichnis, ruft sich die Funktion selbst wieder auf, mit dem neuen 
Verzeichnis als Parameter. Fertig.

von Matthias Kölling (Gast)


Lesenswert?

@Gast Posti
Ich glaub, da brauche ich etwas länger, bis ich es verstanden habe.
Danke erst mal!

@Benedikt
Die Reihenfolge ist nicht beliebig. Ich möchte damit ereichen, dass ich 
sowohl um einzelne Files (respektive Titel) bzw. Verzeichnisse 
(respektive CDs) vor und zurücknavigieren kann.

Gruß Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.