Pourquoi se compliquer la vie?
Pour apprendre tout simplement. ?
Oui, cet exemple est l’un des premiers que j’ai expérimenté naturellement. Mais fonctionnellement il n’est d’aucune utilité. Monee but consiste à récupérer une chaine envoyé par le terminal pour ensuit m’en servir dans un programme. Par exemple une valeur numérique qui influencera la position d’un moteur pas à pas etc.
Je me permets quelques commentaires sur la syntaxe :
- I++ sert à incrémenter la variable I, pas la peine de la réaffecter => le "I =" ne sert à rien.
OUPS, je n’ai pas encore tout en tête. Merci de ce correctif que je vais introduire dans mon source. Je conserve tous ces petits programmes comme exemples, autant qu’ils soient le plus propre possible.
- le ";" est inutile après une accolade fermante.
Je n’avais pas remarqué cette simplification. D’un autre coté, ça signale la fin de l’instruction, donc participe à la lisibilité à mon sens.
si tu as plus de 20 caractères dans le buffer, tu débordes et kaboum => ajouter un "&& I < 20" dans le while.
Exact, je le savais, et j’avais l’intention de compléter mon test. Du reste, sauf erreur de ma part, c’est à 21 que je dois placer ma borne puisque c’est le < qui est placé comme comparateur dans le test.
Le texte s'écrit caractère par caractère parce que tu le reçois caractère par caractère.
Ben non, je ne crois pas. Le texte est chargé caractère par caractère dans un tableau chaine. J’utilise un pointeur I que je manipule à ma façon. Quand tous les octets du tampon de la ligne série ont été récupérés, le programme sort du while et passe à la suite qui consiste à afficher octet par octet les caractères contenus dans mon tableau. En principe, write ne fait pas de passage à la ligne dans cette instruction. C’est là mon incompréhension.
Tant que j’y suis, vous n’avez pas répondu à la limite des 63 octets que j’ai constatés lors d’une saisie par l’utilisation de Serial au lieu des 128 annoncé dans la documentation en ligne.
Encore merci pour toutes ces explications les copains.