Go Down

Topic: Carte SD - programmation [mettre en tableau key et val liées] - config.txt (Read 3 times) previous topic - next topic

Microbulle

#15
Oct 30, 2012, 06:39 pm Last Edit: Oct 30, 2012, 06:46 pm by Microbulle Reason: 1
Ok, donc à moi de renommer en court :)

Ok et que faire pour trash ? Est-ce qu'il peut être retirer de la recherche ?

J'a réussi à virer TRASH et j'ai renommer les fichiers comme suit:
Quote
MEMO.TXT
MODEL001.TXT
MODEL002.TXT
MODEL003.TXT


Maintenant, je cherche à placer ça dans un tableau. J'espère y arrivé seul. Si je voie que je bloque je vous ferais signe. Mais déjà ça avance pas mal ;)

Microbulle

Bon, je suis arrivé à faire un quelque-chose. Pas propre pour le moment car je teste mais je m'en occupe juste après.
Code: [Select]

File myFile;
String tblNomFic[50];

/* SETUP */
void setup() {

  //Initialiser la carte SD
  if(initSD()) {
    //Lister les fichiers présent dans la carte SD
   
    myFile = SD.open("/");
   
    int i=0;
    while(true) {
     
     
      File entry = myFile.openNextFile();
     
      if(!entry) {
        break;
      }
     
      tblNomFic[i] = entry.name();
     
      i++;
    }
  }
 
  //Fermer le fichier
  myFile.close();
 
  //Compte le nombre de fichiers
  int nbFichiers = sizeof(tblNomFic);
 
 
  Serial.println(tblNomFic[0]);
  Serial.println(tblNomFic[1]);
  Serial.println(tblNomFic[2]);
  Serial.println(tblNomFic[3]);
  Serial.println("");
  Serial.println(nbFichiers);
}


Bon, j'ai pas volontairement virer le fichier MEMO, pour le moment. A la limite je saurais que c'est n-1 le nombre de modèle.

Par contre, comme on voie, le sizeof me retourne le tableau complet et non les seuls éléments qui composent le tableau.
C'est peut-être due à mon déclaratif ?
Quote
MEMO.TXT
MODEL001.TXT
MODEL002.TXT
MODEL003.TXT

350


Merci pour votre aide.

SesechXP

sizeof(tblNomFic) te donne la taille de la variable tblNomFic et donc de tous les éléments qu'elle contient.

A priori tu peux connaître le nombre de fichiers dans ta boucle while. Pourquoi ne pas le faire ici ?

Microbulle

Oui effectivement, c'est ce que je fais à présent avec:
Code: [Select]

File myFile;  //Fichier
String tblNomFic[10];  //Le nom des fichiers
int nbFichier;  //Nombre de fichier

/* SETUP */
void setup() {
//Initialiser la carte SD
  if(initSD()) {
   
    //Lister les fichiers de configuration présent
    nbFichier = listeFichier("test");
  }
 
  //Fermer le fichier
  myFile.close();
 
 
  Serial.println(tblNomFic[0]);
  Serial.println(tblNomFic[1]);
  Serial.println(tblNomFic[2]);
  Serial.println(tblNomFic[3]);
  Serial.println("");
  Serial.println(nbFichier);
}

/* LOOP */
void loop() {
}

/* FONCTION listerFichier() */
int listeFichier(String path) {
 
  int count = 0;
 
  myFile = SD.open(path);  //Ouvre la racine
 
  //Tant que c'est vrai
  while(true) {
   
    //Prend le nom du fichier
    File entry = myFile.openNextFile();
   
    //Si c'est la fin
    if(!entry) {
     
      break;  //Sortir de la boucle
    }
   
    //Rentre le nom de fichier dans un tableau
    tblNomFic[count] = entry.name();
   
    count++; //Compter le nombre de fichier
  }
 
  //Retourner le nombre de fichier
  return count;
}


J'ai un petit souci pour transmettre mon chemin. J'en profite de la fonction pour prévoir pour le cas ou on choisirais volontairement un chemin différent. On ne sait jamais dans une autre application ça peut-être utile.

Là, si j'ai bien compris, ce qui ne va pas c'est l'arrivé en string pour aller sur un char*. Je cherche une solution à ce niveau.


Go Up