mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu externem Code


Autor: Johannes H. (menschenskind)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo

Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen, 
was hinter diesem Funktionsaufruf steckt.
fopenc(ps.file_index,'r', "*       MP3", &fp);

Die zugehörigen Dateien sind angehängt.

Es geht darum, dass ich MP3s von der SD-Karte lesen will, nur klappt das 
noch nicht.

Dankeschön

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes Hofmann schrieb:
> hallo
>
> Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen,
> was hinter diesem Funktionsaufruf steckt.
>
>
fopenc(ps.file_index,'r', "*       MP3", &fp);
>

Es wird diese Funktion aus fat.c aufgerufen
// only the 'r' mode is supported so far
bool fopenc(u08 count, u08 mode, u08 *mask, FILE *stream){
  if(mode=='r'){
    u08 ret;
    ret = fio_dir_ctl(FIO_FILENUM, stream, NULL, mask, count);
    stream->file_offset = 0;
    /*
    USART_sendhex(stream->file_current_sectorh>>8);
    USART_sendhex(stream->file_current_sectorh);
    USART_sendhex(stream->file_current_sectorl>>8);
    USART_sendhex(stream->file_current_sectorl);
    */
    return ret;
  };
  return false;
};

so gut wie alle Parameter werden an fio_dir_ctl weitergereicht.
Wenn du also wissen willst, wies weitergeht, dann suchst du dir diese 
Funktion und siehst nach, was damit gemacht wird.

Autor: Johannes H. (menschenskind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ich ja schon gemacht und dort wird das "*      MP3" an die Funktion 
fio_cmp_names weitergeleitet.
Doch ich versteh nicht, was dort damit geschieht, und wieso der Autor 
der Funktion diese Maske übergibt. Auch würde ich gern wissen, ob dort 
nur Dateinamen mit 8 Zeichen berücksichtigt werden und was ich tun 
müsste, damit auch Mp3s mit vielen Zeichen im Dateinamen geöffnet werden 
können.

Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes Hofmann schrieb:
> Hab ich ja schon gemacht und dort wird das "*      MP3" an die Funktion
> fio_cmp_names weitergeleitet.
> Doch ich versteh nicht, was dort damit geschieht, und wieso der Autor
> der Funktion diese Maske übergibt.

Welchen Teil des Funktionskommentares ...
// compares a 11 byte block from the fat table with a 8 byte name and 3 byte extension. 
// '*' is supported as a wildcard

... verstehst du nicht?

OK. Die Vergleichsfunktion ist ein bischen sehr einfach gestrickt und 
auch die Wildcardbehandlung ist ein wenig sehr simpel und stark 
vereinfachend aber im Grunde ist die Funktion simpel.

> Auch würde ich gern wissen, ob dort
> nur Dateinamen mit 8 Zeichen berücksichtigt werden und was ich tun
> müsste, damit auch Mp3s mit vielen Zeichen im Dateinamen geöffnet werden
> können.

Ähm. Das Dateisystem ist FAT. Da gibt es nur 8+3

Autor: vlad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ähm. Das Dateisystem ist FAT. Da gibt es nur 8+3
Stimmt eigendlich schon, wenn du aber unter windows ein laufwerk mit FAT 
bespielst, kannst du da auch lange dateinamen draufpacken
Da wird ein wenig getrickst und mehrere Verzeichniseinträge für eine 
Datei erzeugt.
Die Tricks muss das auslesende Gerät natürlich kennen.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das nennt sich dann FAT32 oder VFAT (M$ verallgemeinert da gerne), was 
eine Erweiterung der FAT-Verzeichnissstruktur darstellt (genauer habe 
ich mich damit aber noch nicht beschäftigt).

Autor: Johannes H. (menschenskind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, ich dachte immer FAT und FAT32 sind grob dassselbe. Aber die 
Länge der möglichen Dateinahmen ist natürlich schon was Diffizileres.

Kennt ihr da evtl. ne fertig implementierte Routine für ne SD-Karte?
Ich werd auch gleich mal bei Google schauen, aber da Google auch nicht 
alles auf den ersten 5 Seiten präsentiert, frag ich hier gleich mal mit.

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.