Carte SD - programmation [mettre en tableau key et val liées] - config.txt

Et bien, c'est tiré par les cheveux mais je suis arrivé à quelque-chose.

Donc au démarrage, on charge deux répertoire dans un tableau chacun.
Dans un des répertoire on a un fichier qui dit quel fichier était ouvert et qui doit directement donné les valeurs à chargé.

Bon, j'en suis à cette étape ou je charge bien le fichier de configuration, mais je dois maintenant choisir entre deux cas dans mon fichier:

Modele = modele001

OU

modele001 //le model

Dans un cas il faudra éliminer le commentaire mais c'est plus simple à gérer. ou bien, moi qui suis un vrai geek et surtout un poil dans la main, on demande la clef dans un tableau à deux dimensions et on a la valeur.

Je suis tenter par le cas 2 avec Modele = modele001.

A ce moment là, comment je puis modifier ma fonction en bas pour charger les données spécifique. Sachant que la même fonction va me servir pour charger et le fichier de conf type sauvegarde, et le fichier du modèle. Donc deux tableaux à rappelés.

Le code actuel:

#define SIZE_BUFFER 32  //Nombre de case du buffer

File myFile;  //Fichier
String tblFicMdle[10];  //Le tableau des noms des fichiers modèles
String tblFicSvg[10];  //Le tableau des noms des fichiers de sauvegardes
int nbFichierMdle;  //Nombre de fichier


  //Initialiser la carte SD
  if(initSD()) {
    
    //Lister les fichier de sauvegardes
    listeFichier("/svgde/");
    
    //Lister les fichiers de configuration modèle
    nbFichierMdle = listeFichier("/modeles/");
    
    //Ouvrir le fichier de sauvegarde memo.txt
    ouvrirFichier("/svgde/" + tblFicSvg[0]);
  }
  else {
     
    //Charger les valeurs par défaut de la radio 
  }
  
  //Fermer le fichier
  //myFile.close();
  
  
  /*
  Serial.println("Modeles :");
  Serial.println(tblFicMdle[0]);
  Serial.println(tblFicMdle[1]);
  Serial.println(tblFicMdle[2]);
  Serial.println("");
  Serial.println(nbFichierMdle);
  Serial.println("");
  Serial.println("Sauvegarde :");
  Serial.println(tblFicSvg[0]);
  */


/* FONCTION initSD() */
boolean initSD() {
  
  clearLcd();  //Effacer l'écran
  ecrireLcd("Init SD Card...", 01);  //Ecrire
  
  //Si la carte n'est pas présente ou qu'elle est en défaut
  if(!SD.begin(4)) {
    
    //Afficher l'écran LCD
    clearLcd();  //Effacer l'écran
    ecrireLcd("Init SD Card failed", 01);  //Ecrire
    delay(1000);
    return false;
  }
  
  clearLcd();  //Effacer l'écran
  ecrireLcd("Init SD Card done", 01);  //Ecrire
  
  delay(1000);
  return true;
}

/* FONCTION listerFichier() */
int listeFichier(String chemin) {
  
  int count = 0;
  char path[SIZE_BUFFER];
  
  //Conversion du chemin
  chemin.toCharArray(path, SIZE_BUFFER);
  
  //Ouvre ce qui est défini par le chemin
  myFile = SD.open(path);
  
  //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
    }
    
    //Si c'est le répertoire /modeles/
    if(chemin == "/modeles/") {
    
        //Rentre le nom de fichier dans le tableau des noms de modèles
        tblFicMdle[count] = entry.name();
    }
    
    //Si c'est le répertoire /sauvegarde/
    if(chemin == "/svgde/") {
        
      //Rentre le nom de fichier dans le tableau des noms de sauvegarde
        tblFicSvg[count] = entry.name();
    }
    
    count++; //Compter le nombre de fichier
  } 
  
  //Fermer le fichier
  myFile.close();
  
  //Retourner le nombre de fichier
  return count;
}

/* FONCTION qui ouvre un fichier */
void ouvrirFichier(String chemin) {
  
  //Variables
  char path[SIZE_BUFFER];
  
  //Transforme le chemin en tableau de carractères
  chemin.toCharArray(path, SIZE_BUFFER);
  
  //Ouvre le fichier de configuration
  myFile = SD.open(path, FILE_READ);
  
  //Erreur d'ouverture du fichier
  if(!myFile) {
    
    clearLcd();  //Effacer l'écran
    ecrireLcd("Fichier failed", 01);  //Ecrire
    for(;;); //Boucle infini (peut tre remplacer par un bouton valider)
  }
  
  //Tant que ce n'est pas la fin du fichier
  while(myFile.available()) {
    Serial.write(myFile.read());
  }
  
  //Fermer le fichier
  myFile.close();
  
  delay(1000);
}

Pour le moment je me contente d'afficher le résultat:

Modele = modele001

Dernier point, j'aimerais tant que faire ce peu que ça soit pas trop compliqué à digéré de façon à m'y retrouver ensuite. :ccool:

Merci encore et me blâmer pas trop. J'essaie d'apprendre par al pratique.