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.