Bonjour, j'ai un switch case qui me pose problème,
en effet , le switch case ne se comporte pas comme il devrait ?
Tout d'abord, je vérifie que le caractère de choix est correct, et il l'est toujours,
Mais
ex sur le cas 'Y' les instructions de ce bloc ne sont pas exécutées du tout
J'ai fait plein de test en simplifiant au maxi les blocs , e en rajoutant plein d'autres, et je m'aperçois que parfois seule la première instruction est exécutée ou pas du tout ??
Ce switch case fait partie d'un programme installé sur un arduino MEGA, il fait 3096 octets (12¨%)
Quelles peuvent bien être les causes de ce problème ?
Je ne comprend pas ce qui se passe, je souhaite comprendre ,
Merci par avance de vos avis
void traitementTrame(char trame[] ) {
Serial.print(F("recu : "));
Serial.println(trame);
Serial.println (strlen(trame));
Serial.println(trame[0]);
switch (trame[0]) {
case 'M':
Serial.println(" case M"); // indiquer le passage dans le bloc
byte fin = strlen(trame)-1 ;
for (byte i = 0; i < (fin -1) ;i++) { // copie de la trame recu sans les 2 premiers caracteres le 'M' et le ':'
trame[i]= trame[i+2];
}
trame[fin -1]='\0';
enregistrement_SD(trame); // appel de la procedure pour enregister la trame dans un fichier sur la carte SD
delay(20);
break;
case 'W':
Serial.println(" case W"); // indiquer le passage dans le bloc
char texteval[4] ; // déclarattion tableau de 4 caractères par sécurité
byte index = 0;
texteval[0] = trame[1]; // 2eme caractere de l'index (le ier étant la lettre code)
texteval[1] = trame[2]; // 2ieme caractere de l'index
texteval[2]= '\0'; // fin de chaine
index = atoi(texteval); // transforme la chaine en nombre
action(trame[0], index);
break;
case 'Y':
Serial.println(" case Y");
char retour[66];
retour[0] = 'Y';
byte v = 1;
byte valmcp ;
for (byte a = 0; a < strlen(adrout); a++) {
for (byte p = 0; p < strlen(port) ; p++) {
valmcp = lireportmcp(adrout[a], port[p]);
for (byte b = 0; b< 8; b++) {
if (bitRead(valmcp, b)== 1) {retour[v] = '1';} else{ retour[v] = '0';}
v+= 1;
}
}
}
retour[v] = '\0';
client.print(retour);
Serial.print("retourné ") ;
Serial.println(retour) ;
break;
default :
break;
}
}