DFPlayer Anzahl der Dateien im Verzeichnis

Hallo Arduino's !

Ich habe das Problem, dass die readFileCountsInFolder()-Funktion der DFPlayer-Bibliothek nicht die richtige Anzahl der Dateien in einem Verzeichnis anzeigt. Die Gesamtanzahl der Dateien und Verzeichnisse hingegen werden wieder korrekt wiedergegeben.

  Serial.print("Auf der SD-Karte befinden sich " + String(myPlayer.readFolderCounts()) + " Verzeichnisse ");
  Serial.println("mit insgesamt " + String(myPlayer.readFileCounts())+ " Dateien.");
  Serial.println("Dateien im Verzeichniss [1]: " + String(myPlayer.readFileCountsInFolder(1)));
  Serial.println("Dateien im Verzeichniss [2]: " + String(myPlayer.readFileCountsInFolder(2)));
  Serial.println("Dateien im Verzeichniss [3]: " + String(myPlayer.readFileCountsInFolder(3)));
  Serial.println("Dateien im Verzeichniss [4]: " + String(myPlayer.readFileCountsInFolder(4)));
  Serial.println("Dateien im Verzeichniss [5]: " + String(myPlayer.readFileCountsInFolder(5)));
  Serial.println("Dateien im Verzeichniss [99]: " + String(myPlayer.readFileCountsInFolder(99)));

Datenträger:

Serialmonitor:

Der Zugriff in einem Verzeichnis auf eine bestimmte Datei hingegen funktioniert wieder anstandslos:

myPlayer.playFolder(3, 5);  

Die Datei 005.mp3 im Verzeichnis 03 wird wiedergegeben.

Auch wenn ich mir die Gesamtausgabe von oben nicht anzeigen lasse und nur eine einzelne Abfrage der Anzahl der Dateien in dem Verzeichnis (z.B.) 3 mache, ist die Ausgabe falsch.

Die Anzahl die für jeden Ordner ausgegeben wird, ist die Anzahl der Dateien im advert-Verzeichnis.

Referenziere ich das Verzeichnis falsch (Verzeichnis-Nummer) ?

Fred.

Da Du keine Referenzen benutzt: Nein.
Was auch immer Du da gebaut hast - keine Ahnung was Du da vor hast.
Kannst Du einen Code, der kompiliert und das Problem wenigstens minimalst beschreibt, bringen?

Hallo my_xy_projekt!

Danke für deine schnelle Antwort.

Die Kurzform ist der erste Satz:

Serial.println("Dateien im Verzeichniss [3]: " + String(myPlayer.readFileCountsInFolder(3)));

gibt 267 wieder, im Verzeichnis 3 befinden sich aber 57 Dateien. Auffallend ist, dass für alle Verzeichnisse die gleiche Anzahl an Dateien zurück gegeben wird!

Der Sketch wird anstandslos kompiliert, siehe Abbild des Serialmonitors, aber ich kann natürlich auch eine Kurzform posten.

Fred.

// Bibliothek(en)
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"


// Objekt-Initalisierung
SoftwareSerial mySerial(2, 3);  // RX, TX
DFRobotDFPlayerMini myPlayer;


// Programm-Initalisierung
void setup()
{
  mySerial.begin(9600);
  Serial.begin(115200);
  
  if (!myPlayer.begin(mySerial)) {  //Use softwareSerial to communicate with mp3.
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));  
  Serial.print("Auf der SD-Karte befinden sich " + String(myPlayer.readFolderCounts()) + " Verzeichnisse ");
  Serial.println("mit insgesamt " + String(myPlayer.readFileCounts())+ " Dateien.");
  Serial.println("Dateien im Verzeichniss [1]: " + String(myPlayer.readFileCountsInFolder(1)));
  Serial.println("Dateien im Verzeichniss [2]: " + String(myPlayer.readFileCountsInFolder(2)));
  Serial.println("Dateien im Verzeichniss [3]: " + String(myPlayer.readFileCountsInFolder(3)));
  Serial.println("Dateien im Verzeichniss [4]: " + String(myPlayer.readFileCountsInFolder(4)));
  Serial.println("Dateien im Verzeichniss [5]: " + String(myPlayer.readFileCountsInFolder(5)));
  Serial.println("Dateien im Verzeichniss [99]: " + String(myPlayer.readFileCountsInFolder(99)));
}
 
void loop() { }

Serialmonitor:

Noch eine Anmerkung:

Mit Referenzierung meinte ich die Zuordnung des physikalischen Verzeichnisses zu der Verzeichnis-Nummer, die in der Funktion readFileCountsInFolder(Verzeichnis-Nummer) angegeben werden muss. Das 1. Verzeichnis nach Erstellungs-Datum ist advert, das erste Verzeichnis nach Name ist 01. Nicht, dass eine bestimmte Reihenfolge eingehalten werden muss. (Also Referenz nicht im Sinne von Pointer...)

Root-Verzeichnis

...
3 ist gut.
Hast Du das Example mal laufen lassen? Was gibt das aus? DFRobotDFPlayerMini/ReadValues.ino at master · DFRobot/DFRobotDFPlayerMini · GitHub

Gibt es unter DATEI - BEISPIELE - DFRobotDFPlayerMini - ReadValues....

Hallo my_xy_projekt!

Das Beispiel macht genau das Gleiche wie meinem Sketch und erzeugt dementsprechend auch das gleiche Ergebnis.

Das Problem muss! am "Aufbau" der Verzeichnisse (Datei-Nummern) liegen.

Ich schau mir morgen mal die Bibliothek -> Funktion in der cpp-Datei an.

Danke für deine Bemühung(en)!!!

Fred.

Dann hab ich ja Zeit :wink: Viel Zeit...
Ich kann mich dran erinnern, das unter bestimmten Konstellationen eine andere lib funktioniert hat... Mal sehen, vielleicht heute Abend. Mal sehen,,,,
Kannst Du was zu Deiner Hardware sagen?

mach doch mal die führende 0 aus den Vereichnisnummern raus...

HA!

Deine MP3-Dateinamen entsprechen nicht der Konvention!

Hallo my_xy_projekt!

Wieder Danke! für deine Bemühung(en)!

Die Nomenklatur die du angesprochen hast, gilt nur für das mp3 und advert-Verzeichnis. Ist in meinen Verzeichnisbildern auch ersichtlich. Ich möchte aber weitere Verzeichnisse benutzen und da ist eine 2stellige Verzeichnis-Angabe und eine 3stellige Dateinummerierung verpflichtend.

Der Zugriff (Play) innerhalb eines Verzeichnisses funktioniert ja auch korrekt.

Innerhalb der Bibliothek werden nur die korrespondierenden Steuerbefehle an den DFPlayer gesendet. Zum Auslesen der Dateianzahl in einem Ordner, also Ox4E. Daran kann es also nicht liegen.

Ich werde heute Abend noch ein wenig mit der SD-Karte experimentieren. Fals dass nicht zum Erfolg führt, ist wahrscheinlich dein Hinweis, dass es an dem Chipsatz liegt, zutreffend.

Viele Grüße

Fred.

Ich würde als erstes nur ein MP3-Dir bauen und da mal 5 Dateien rein - sehen, was geht.

Hallo,
versuch mal einen ander Lib

Documentation

See Wiki

die wird bei dem Tonuino Projekt benutzt , die findest Du auch im Lib Verwalter der IDE
Heinz

Hallo Rentner! Hallo my_xy_projekt!

Danke für eure Hinweise!

Wie das oft bei hartnäckigeren Problemen ist, es liegt nicht nur an einer Komponente.

Zuerst zum DF-Player.

Ich hatte zwei unterschiedliche Typen (Chipsätze). Ich nenne sie jetzt mal Alt und Neu.

Der Alte DF-Player verwendet den Chipsatz: GD3200B

und erzeugt mit der Standard Bibliothek (DFRobotDFPlayerMini) die oben gezeigt Ausgabe, bei der in allen Verzeichnissen die gleiche Anzahl an Dateien enthalten sein sollten.

Deswegen habe ich den Neuen DF-Player, der den Chipsatz: YX6200-24SS verwendet, ausprobiert.

Damit erhielt ich schon einmal (in einigen Verzeichnissen) unterschiedliche Angaben der Dateien-Anzahl.

Nachdem ich nun den Hinweis von "Rentner" aufgriff und die "DFPlayer Mini Mp3 by Makuna" - Bibliothek implementierte, war die Anzahl der Dateien in den einzelnen Verzeichnissen korrekt.
Lediglich die Gesamtzahl der Verzeichnisse passte nicht. Wahrscheinlich zählt der Neue DF-Player den Root-Eintrag, der sich ab FAT32-formatierten Datenträgern auch im Bereich der Datensektoren befindet, mit. Letztendlich kann der DF-Player nur die File Alocation Table des Datenträgers, auswerten!

Als Gegenprobe habe ich noch einmal die Neue Bibliothek (DFPlayer Mini Mp3 by Makuna) mit dem Alten-DF-Player geladen, aber der Chipsatz liefert die falschen Daten.

Also nochmals vielen Dank für die Hinweise!

Fred.

1 Like