mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verzeichnisstruktur lesen


Autor: Matthias Kölling (Gast)
Datum:

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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Lothar Sammel (magic33)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: Matthias Kölling (Gast)
Datum:

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

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

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

Autor: Matthias Kölling (Gast)
Datum:

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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.