Fragen zum Gd3200b

Ich hatte vor kurzem eine Diskussion mit @raznz_snasna bezüglich des Problems der Angabe der Trackzahl im Ordner. Das betraf zwar den MHETLIFE 24K 16SS, aber die Lösung wurde von der Idee von @Bastelmatz bezüglich des GD3200 abgeleitet. Folgend der interessante Teil, der hier vielleicht auch helfen könnte.
Die Codeteile wurden in meinem Fork Always queue eingearbeitet, den du ja verwendest.
ZITAT:
Das Problem der Trackzahl bin ich ähnlich angegangen, wie das schon von Bastelmatz für den GD3200 gelöst hat. Allerdings war es mir zuviel Aufwand jeden Ordner mit einem StilleTrack Tracknummer 000 auszustatten und habe eine andere Lösung gefunden, die das nicht erfordert. In der Funktion Ordner abspielen habe ich ein paar Codezeilen eingefügt, die nach auflegen einer Karte, oder Starten eines Shortcuts den ersten Titel des aktuellen Ordners kurz anspielt, wieder Stoppt und die Trackzahl neu ausließt. Damit das nicht hörbar ist, wird die Lautstärke des Players für das Anspielen auf 0 gesetzt und anschließend wieder auf den ursprünglichen Wert. Das ganze funktioniert leider nur mit reichlichen delays, so dass das Abspielen des Ordners ca 2 Sekunden verzögert erfolgt. das funktioniert in meinem Fork mit ca 90% Erfolg. Ab und zu haut er trotzdem daneben. Sporadisch auch noch comError 3, aber deutlich weniger als mit der originalen Library. Ich denke, dass die Firmware des 16SS noch ziemlich buggy ist, was Stephan ja auch schon festgestellt hat. Also mit gelegentlichen Zicken ist der Player nutzbar, aber Top ist anders.
Anbei noch der Code. Da sind jetzt noch viele SerialPrints drin zur Kontrolle. Die kann man aber auch rausnehmen. Die beiden Funktionen muteOn() und muteOff () sind zum Stummschalten des Anspielens verantwortlich.

// ***************** MUTE **********************************
uint8_t muteVol;
void muteOn()
{
muteVol= (mp3.getVolume());
Serial.print("muteVol :");
Serial.println(muteVol);
delay(100);
mp3.setVolume(0);
}

void muteOff()
{
delay(500);
mp3.setVolume (muteVol);
delay(500);
uint8_t lastVolset = (mp3.getVolume()) ;
Serial.print("lastVolset :");
Serial.println(lastVolset);
delay(1000);
}

// ***************** Ordner abspielen ******************
void playFolder()
{
#ifdef Konsole
  Serial.print(F("Play Folder: "));
  Serial.println(myFolder->folder);
#endif
  disablestandbyTimer();
  randomSeed(millis() + random(1000));
  knownCard = true;

  _lastTrackFinished = 0;
  numTracksInFolder = mp3.getFolderTrackCount(myFolder->folder);      // Anzahl der Tracks im Ordner
  firstTrack = 1;
#ifdef Konsole
  Serial_println_F(getModeName(myFolder->mode));                      // Anzeige Abspielmodus
  Serial.print(numTracksInFolder);                                    // Anzahl der Tracks
  Serial.print(F(" Dateien in Ordner "));
  Serial.println(myFolder->folder);                                   // Ordner Nr
#endif

  // ****************************************************************************
muteOn();
mp3.playFolderTrack(myFolder->folder,1);
delay(1000);
mp3.pause(); 
delay(100);
muteOff();
  _lastTrackFinished = 0;
  numTracksInFolder = mp3.getFolderTrackCount(myFolder->folder);      // Anzahl der Tracks im Ordner
  firstTrack = 1;
#ifdef Konsole
  Serial_println_F(getModeName(myFolder->mode));                      // Anzeige Abspielmodus
  Serial.print(numTracksInFolder);                                    // Anzahl der Tracks
  Serial.print(F(" Dateien in Ordner "));
  Serial.println(myFolder->folder);                                   // Ordner Nr
#endif
  
  
  // **************** Abspielmodi ***********************************************