Frage zu externem Code

OP #1291868
hallo

Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen, 
was hinter diesem Funktionsaufruf steckt.
1
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
Angehängte Dateien:
Johannes Hofmann schrieb:
> hallo
>
> Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen,
> was hinter diesem Funktionsaufruf steckt.
>
>
1
fopenc(ps.file_index,'r', "*       MP3", &fp);
>

Es wird diese Funktion aus fat.c aufgerufen
1
// only the 'r' mode is supported so far
2
bool fopenc(u08 count, u08 mode, u08 *mask, FILE *stream){
3
  if(mode=='r'){
4
    u08 ret;
5
    ret = fio_dir_ctl(FIO_FILENUM, stream, NULL, mask, count);
6
    stream->file_offset = 0;
7
    /*
8
    USART_sendhex(stream->file_current_sectorh>>8);
9
    USART_sendhex(stream->file_current_sectorh);
10
    USART_sendhex(stream->file_current_sectorl>>8);
11
    USART_sendhex(stream->file_current_sectorl);
12
    */
13
    return ret;
14
  };
15
  return false;
16
};

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.
OP
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
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 ...
1
// compares a 11 byte block from the fat table with a 8 byte name and 3 byte extension. 
2
// '*' 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
Gast
> Ä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.
OP
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.