Salut Yves,
Pas de souci, le code n'est pas de moi:
trouvable ici:
http://www.pobot.org/Interface-ligne-de-commande-pour.html
il enregistre TOUS les octets reçus dans une chaine de caractères (un caractère = un octet)
la chaine est du type "SD45G23" par exemple (il y a donc ici 7 octets envoyés)
"S" signifie start, on passe à la lettre suivante
"G" annonce la valeur de la variable gauche:
on rentre dans une boucle TANT QUE le caractère suivant est un chiffre, on le récupère:
si on a "45", le programme va lire 4, et va stocker dans la variable "gauche" (initialisée à zéro) la valeur 4.
puis il va lire 5 et va faire: "gauche" PREND LA VALEUR de (5 + 10 * "gauche") . cela permet de gérer les nombres décimaux ( 1234 = 1*1000+2*100+3*10+4*1 ou ici : 1234= (((0+1)*10+2)*10+3)*10+4. pas très clair à écrire...
si le programme lit un caractère dont le code ASCII n'est pas compris entre 48 et 57 (les chiffres), on sort de la boucle "TANT QUE" qui permettait d'obtenir la valeur de "gauche". il peut recevoir D (ou pas, ça marche tout de même), s'il n'y a rien il tombe sur "E" qui est ajouté automatiquement et qui marque la fin du message.
le programme d'origine fonctionne pour "G" et "D", mais on peut ajouter "A", "Z", ou même "%" , "#"... (tous les caractères ASCII sauf les chiffres)
pour le souci premier de julkien, il croyait envoyer la valeur 90 mais il envoyait la valeur 57 (code ASCII de 9) puis 48. Avec son code, pour envoyer le servo à 90° il aurait fallu taper le caractère Z (majuscule).
C'est des soucis de programmation de bas niveau, il ne faut pas oublier qu'un programme ne fait pas ce qu'on veut qu'il fasse, mais ce qu'on lui a dit de faire (et il y a parfois de grands écarts entre les 2 )