Forum: Mikrocontroller und Digitale Elektronik MP3 Player: Navigation durch Ordner und Datein


von RK - NK (Gast)


Lesenswert?

Ich habe einen Eigenbau MP3 Player mit grafischem Display und externem 
Speicher (1MB).

Möchte über das grafische Display Ordnerstrukturen anzeigen lassen nur 
fehlt mir die Idee wie ich so etwas effizient machen kann.

Derzeit lese ich alle FAT Einträge beim "Abtauchen" in einen Ordner aus 
und speicher Dateigröße, Startcluster und Dateiname im externen SRAM. 
Wenn ich jetzt im ausgelesenen Ordner herumscrolle aktualisiere ich 
ständig die Datein bzw. Ordner am Display. Tauche ich wieder in einen 
anderen Ordner ab, werden die gespeicherten Einträge im SRAM mit den 
neuen überschrieben.
Die Methode ist aber extrem lahm, denn taucht man in einen Ordner mit 
vielen Datein ab, dann dauert das entsprechend lange bis man alle 
Einträge verarbeitet hat. Abgesehen davon geht irgendwann auch der 
Speicher aus.

Wie macht ihr das?
Wie habt ihr das mit der Ausgabe der Ordnerstrukturen gelöst?

von boxi (Gast)


Lesenswert?

speicher nur die infos im ram, die du gerade anzeigen bzw. verarbeiten 
willst...

von RK-NK (Gast)


Lesenswert?

Aber schlussendlich brauch ich ja alle Informationen aller Lieder auf 
der Festplatte, zumindest wieviele Lieder es gibt und welchen 
Startcluster die haben. Wenn ich im Shuffle Modus erst wieder beim 
Rootdirectory anfangen muss und mich bis zu einer gewünschten Datei 
durchwühlen muss, dann dauert so was ja lange oder nicht?
Dasselbe trifft doch auch zu, wenn ich durch die Ordner "browse". Ich 
muss wieder die gesamte FAT Tabelle auslesen bis ich zu der nächsten 
Datei im Browser gelange und von dieser dann Dateilänge, Name... 
auslese.

von Karl H. (kbuchegg)


Lesenswert?

RK-NK wrote:
> Aber schlussendlich brauch ich ja alle Informationen aller Lieder auf
> der Festplatte, zumindest wieviele Lieder es gibt und welchen
> Startcluster die haben. Wenn ich im Shuffle Modus erst wieder beim
> Rootdirectory anfangen muss und mich bis zu einer gewünschten Datei
> durchwühlen muss, dann dauert so was ja lange oder nicht?
> Dasselbe trifft doch auch zu, wenn ich durch die Ordner "browse". Ich
> muss wieder die gesamte FAT Tabelle auslesen bis ich zu der nächsten
> Datei im Browser gelange und von dieser dann Dateilänge, Name...
> auslese.

Ja das musst du.
Die Frage ist nur, wie du das mit der Anzeige ineinander
verzahnst.

Das ganze nennt sich 'lazy evaluation':
Wenn eine Information 'teuer' zu beschaffen ist, dann besorge
sie erst dann, wenn du sie wirklich brauchst.

In deinem Fall: Erst dann wenn ein Eintrag in dein Display
hineingescrollt wird, wird er auch tatsächlich vom Directory
ausgelesen. Gewisse Dinge, wie zb. eine notwendige Sortierung
der Einträge können dir da einen Strich durch die Rechnung
machen.

Aber letztendlich kann niemand zaubern: Wenn du alle Einträge
gleichzeitig brauchst, dann musst du auch alle Einträge lesen.
Allerdings: Für den Shuffle Modus musst du ja nicht alle
Einträge im Detail kennen. Du musst nur wissen wieviele es
sind. Deine 'Shuffle Liste' besteht dann nur aus einer
Zahlenliste in der steht, welches Lied (welche Nr) als
nöchstes kommt. Wenn du dann das Lied anspielst, holst du
zuerst den zugehörigen Directory Eintrag und zeigst ihn
an (lazy Evaluation).

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.