En fait, je ne crois pas avoir trouvé la meilleur solution car ceci me génère un probleme surprenant
Avant my function setup(), je déclare un variable booléene de cette manière
bool alarm = false;
Si je dépasse un zone, elle passe a true, si je reviens, elle passe à false.
Cette variable n'a trictement rien à voir avec l'interaction de ma carte SD et en aucun cas, elle est appelée à changer de valeur.
Ce qui me surprend, c'est au niveau de ce code
SerialUSB.print("Alarm741: ");
SerialUSB.println(alarm);
char *p = entry.name();
path[numTabs] = p;
countSavedFilesInSd = 0;
// SerialUSB.println("/");
SerialUSB.print("Alarm75: ");
SerialUSB.println(alarm);
Alarm741 m'affiche 0
et Alarme 75 m'affiche 126
Mais comment es-ce possible que d'une part alarm prend une valeur non boléenne, mais surtout comment elle peut changer de valeur après le passage de
char *p = entry.name();
path[numTabs] = p;
Voici le code de ma fonction qui ou est généré cette erreur
printDirectory("/GPS/",0);
void printDirectory(File dir, int numTabs) {
SerialUSB.print("Alarm71: ");
SerialUSB.println(alarm);
if(numTabs == 0)
{
memset(sd_path, '\0', sizeof(sd_path));
}
SerialUSB.print("Alarm72: ");
SerialUSB.println(alarm);
while(true)
{
File entry = dir.openNextFile();
if (! entry)
{
// no more files
/*
SerialUSB.println(F("Break"));
sprint(F("numTab: "), 0);
SerialUSB.println(numTabs);
*/
sprint(F("Nb of Files: "), 0);
sprintln(countSavedFilesInSd, 0);
sprint(F("\n"), 0);
SerialUSB.print("Alarm73: ");
SerialUSB.println(alarm);
break;
}
for (uint8_t i=0; i<numTabs; i++)
{
//SerialUSB.print('\t');
}
// SerialUSB.print(entry.name());
/*
SerialUSB.print("(");
SerialUSB.print(numTabs);
SerialUSB.print(")");
*/
SerialUSB.print("Alarm74: ");
SerialUSB.println(alarm);
if (entry.isDirectory())
{
SerialUSB.print("Alarm741: ");
SerialUSB.println(alarm);
char *p = entry.name();
path[numTabs] = p;
countSavedFilesInSd = 0;
// SerialUSB.println("/");
SerialUSB.print("Alarm75: ");
SerialUSB.println(alarm);
printDirectory(entry, numTabs+1);
SerialUSB.print("Alarm76: ");
SerialUSB.println(alarm);
}
else
{
sd_path[0] = '/';
sd_path[1] = '\0';
for(int f=0; f < numTabs; f++)
{
strncat(sd_path, path[f], strlen(path[f]));
strncat(sd_path, "/" , 1);
}
/*
sprint(F("PATH: "), 0);
sprintln(sd_path, 0);
*/
if(entry.name()[0] == '_')
{
SerialUSB.print("Delete: ");
SerialUSB.println(entry.name());
}
memset(sd_path_file,'\0',sizeof(sd_path_file));
sprintf(sd_path_file, "%s%s", sd_path,entry.name());
// sprintln("FILE:",0);
sprint(sd_path_file, 0);
// files have sizes, directories do not
SerialUSB.print("\t");
SerialUSB.println(entry.size(), DEC);
countSavedFilesInSd++;
SerialUSB.print("Alarm78: ");
SerialUSB.println(alarm);
}
entry.close();
SerialUSB.print("Alarm79: ");
SerialUSB.println(alarm);
}
Alarm71, Alarm72, Alarm73, Alarm74, Alarm741 affcihent bien 0, soit false..
Merci pour vos lumièeres