Bonjour Pat42

Envoyé par
Pat42
Est ce que cela pourrait être dû à un pb de casse.
Dans ton cas, si tu écris on ou off exactement comme dans le programme, ça devrait marcher, mais dans ce genre de fonctions, il est bon de convertir en majuscules la ligne introduite dans le moniteur et tester les mots en majuscules (== "ON" == "OFF"), cela permet plus de liberté à celui qui tape le commande et évite au programmeur un mode d'emploi 
1 2
| msg = Serial.readString(); //Lit le message reçu comme une suite de caractère
msg.toUpperCase(); |
Maintenant, pourquoi ton code ne fonctionne pas, l'ajout d'une ligne est très instructive:
1 2
| Serial.print(msg); //Affiche le message dans l'interface Série
Serial.print(msg.length()); //Affiche la longueur du message |
Le chiffre accolé au message est plus grand que le nombre de caractères du message, cela vient des caractères "fantômes" (CR ou LF ou CR et LF) ajoutés par la console et qui sont ajoutés au moment du Enter et réglés en bas à droite du moniteur série, à gauche de la vitesse. Si tu mets pas de fin de ligne ton programme fonctionne.
Mais, comme pour majuscule/minuscule cités plus haut, le mieux est de "passer par-dessus" ce problème, en ignorant ces fins de lignes ajoutés par cette façon de tester:
if (msg.startsWith("ON")) //Test du message pour on
Cordialement
jpbbricole
Partager