GD3200B - Anzahl angezeigter Ordner erst nach 2.tem Auflegen der Karte richtig

Ich teile hier dann mal eine mögliche Lösung. @Bastelmatz und ich hatte anscheinend den selben Ansatz.
Damit der Player sicher die Dateien im richtigen Ordner zählt, muss er vorher etwas daraus abspielen. Hierfür eignet sich eine Datei mit Stille. Diese kann man zum Beispiel hier herunterladen. Die Datei muss länger sein als das im Code eingefügte delay, jedoch will man ja auch nicht unnötig Speicher belegen. Getestet wurde mit der 2 Sekunden-Datei. Diese wird dann in jedem Ordner als 000.mp3 eingefügt.

Im Code wird dann bei Start der Wiedergabe zunächst die Stille abgespielt und dann die Anzahl der Tracks im Ordner ermittelt. Wie lange der Player dazwischen braucht muss man ein wenig probieren. Je länger das Delay, desto länger dauert es bis die Wiedergabe beginnt. Ist es allerdings zu kurz, wird die Trackanzahl wieder falsch ermittelt. Am besten probiert man aus, was im eigenen Aufbau gut funktioniert.
Im Code muss dann entsprechend zu Beginn von playFolder() die Wiedergabe der Stille ergänzt werden und diese natürlich bei der Anzahl der ermittelten Tracks wieder abgezogen werden:

void playFolder() {
    Serial.println(F("== playFolder()")) ;
    disablestandbyTimer();
    knownCard = true;
    _lastTrackFinished = 0;
    mp3.playFolderTrack(myFolder->folder, 0);
    Serial.println(F("kurze Pause"));
    delay(1500);  //diese Delay so kurz wie möglich wählen
    numTracksInFolder = mp3.getFolderTrackCount(myFolder->folder) - 1;
    firstTrack = 1;
    Serial.print(numTracksInFolder);
    Serial.print(F(" Dateien & 1 Stille in Ordner "));
    Serial.println(myFolder->folder);
    ...

Vielen Dank an @Volker-W und @pitpossum79 fürs Testen.

3 „Gefällt mir“