problema ordinamento file con sd card

ciao a tutti, sto usando la mp3 player shield della sparkfun che usa la micro sd. non riesco a capire come ordinare i files.. io li vorrei semplicemente.. in ordine. ho usato questa nomenclatura:

track0001.mp3 track0002.mp3 track0003.mp3 .... track0119.mp3

solo che non capisco proprio perchè, ma se eseguo questa funzione (che è nell'esempio della libreria della scheda)

void playFile(long fn_index) {
  Serial.println(fn_index); 
  
  SdFile file;
  char filename[13];
  sd.chdir("/",true);
  uint16_t count = 1;
  while (file.openNext(sd.vwd(),O_READ))
  {
    file.getFilename(filename);
    if ( isFnMusic(filename) ) {

      if (count == fn_index) {
        Serial.print(F("Index "));
        SerialPrintPaddedNumber(count, 5 );
        Serial.print(F(": "));
        Serial.println(filename);
        Serial.print(F("Playing filename: "));
        Serial.println(filename);
        int8_t result = MP3player.playMP3(filename);
        //check result, see readme for error codes.
        if(result != 0) {
          Serial.print(F("Error code: "));
          Serial.print(result);
          Serial.println(F(" when trying to play track"));
        }
        break;
      }
      count++;
    }
    file.close();
  }
}

legge i file apparentemente a caso.. come posso fare con che ordine vengono letti??

Non conosco il filesystem FAT ma se crei/cancelli dei file l'ordine fisico sul filesystem si altera perché i "buchi" lasciati dai vecchi file cancellati potrebbero essere "tappati" scrivendoci solo dei file che entrano materialmente in quello spazio. Per cui alla fine potrebbe darsi che tu abbia il file 001, poi 002, poi 056, poi 101, poi 007, poi 006 ecc...

Penso che legge i file in funzione della sequenza con cui li hai scritto / e come dice Leo in funzioni di file cancellati e rinpiazzati.
Prova a cancellare tutti i file sulla sd e di riscriverli nel ordine da te voluto.

Ciao Uwe

si sembra proprio così, i file vengono ordinati in base alla data di scrittura grazie ragazzi

ok ho trovato il problema, sembra che mac osx copi i file in parallelo quindi qualcuno viene scritto prima qualcuno viene scritto dopo..

sapete come fare la copia in serie? nel senso: copia il primo,aspetta che finisca, copia il secondo, aspetta che finisca, etc..

?

o con mac osx o con qualche scriptino bash/python va bene lostesso..

Perdona, ma se fai la cosa in due passate ?

Prima ti leggi SOLO i nomi dei files presenti, esegui un semplice sort (... credo che un volgare "bubble sort" vada più che bene per lo scopo) e poi, una volta che ce li hai ordinati, li leggi in quell'ordine ... ... così, comunque sono registrati, sei tu che decidi in che ordine pescarli.

Guglielmo

P.S. : Un banale esempio di "bubble sort" per numeri interi lo trovi qui http://www.algorithmist.com/index.php/Bubble_sort.c ... va adattato alle stringhe, ma il concetto non cambia