Bonjour la communauté,
Je suis tout nouveau .... Grâce à vos écris XDje me débrouille jusqu'ici très bien ...
Mais je cale avec les subtilités ou limites de l'usage de "case".
L'usage d'un simple case fonctionne parfaitement, maintenant, j'essaye de les imbriqués.
Le soucis, il semble qu'il rentre bien dans la sélection mais il break et reviens à l'attente de l'entrée principal.
Pour mieux comprendre :
int incomingByte;
int incomingByted;
int incomingBytec;
int incomingByteca;
int incomingBytecn;
void loop()
{
while (Serial.available() > 0) {
Serial.println("H or h For Help command");
Serial.println("Ready !");
incomingByte = Serial.read();
switch (incomingByte) {
case 'd':
case 'D':
Serial.print("D Fonction selected");
Serial.println(" - Select Channel Type ?");
incomingByted = Serial.read();
switch (incomingByted) {
case 'a':
case 'A':
Serial.print("Analogique type selected");
Serial.println(" - Select Channel number");
incomingByteca = Serial.read();
switch (incomingByteca) {
case '1':
break;
// MaFonctionD(A1);
case '2':
break;
// MaFonctionD(A2);
case '3':
break;
// MaFonctionD(A3);
case '4':
break;
// MaFonctionD(A4);
case '5':
break;
// MaFonctionD(A5);
case '6':
break;
// MaFonctionD(A6);
case '7':
break;
// MaFonctionD(A7);
default:
Serial.println("Error Please select analogique channel 1 to 7");
break;
}
case 'n':
case 'N':
delay(100);
Serial.print("Numerique Type selected");
Serial.println(" - Select Channel number");
incomingBytecn = Serial.read();
switch (incomingBytecn) {
case '1':
MaFonctionD(30);
break;
case '2':
MaFonctionD(31);
break;
case '3':
// MaFonctionD(3);
break;
case '4':
// MaFonctionD(4);
break;
case '5':
// MaFonctionD(5);
break;
case '6':
// // MaFonctionD(6);
break;
case '7':
// MaFonctionD(7);
break;
default:
Serial.println("Error Please select Numeric channel 1 to 7");
break;
}
default:
Serial.println(incomingByted);
Serial.println("Error please select N fo Numeric or A for analogique");
break;
}
break;
case 'v':
case 'V':
Serial.println(incomingByte);
Serial.println("Nano - 1.0");
break;
case 'o':
case 'O':
Serial.println(incomingByte);
OKLED();
break;
case 'n':
case 'N':
Serial.println(incomingByte);
NOOKLED();
break;
case 'h':
case 'H':
Serial.println(incomingByte);
Serial.println("Internal Fonction:");
Serial.println("H Help");
Serial.println("V Version");
Serial.println("O Led Vert OK On");
Serial.println("N Led Rouge ON");
Serial.println("D Fonction menu");
break;
default:
Serial.println(incomingByte);
Serial.print("Error:");
Serial.println("Unreconize command");
Serial.println("For all command please command H");
break;
}
}
}
Quand je presse O ou N pas de soucis, il s’exécute sans problème. Par contre quand je sélectionne D c'est comme si il passait incomingByted = Serial.read();
Il affiche donc le message d'erreur par défaut mais en plus il break et renvois vers le case supérieur ...
Serial.println("Error please select N fo Numeric or A for analogique");
D'ailleurs, je n'arrive jamais à switch (incomingByteca)
...
J'ai essayer en retirant les break des sous combinaisons sans résultat et si je retire tout les breaks pas mieux. ... J'ai tenter plusieurs combinaisons avec ou sans break, mais le résultat n'est pas celui espérer !
Un Arduineur pour peut être m'éclairer ?
Ou je devrait peut être mixé if dans un case ?
Merci pour votre aide,
Bonne journée,