Parlons Arduino > Débuter
Communication via USB avec un moniteur série non IDE - résolu
JPM06:
Bonjour,
J'essaie de faire communiquer mon Arduino avec un PC via le port USB.
Avec l'IDE ça fonctionne très bien dans les deux sens.
Avec un moniteur série ou mes propres programmes en VB, je reçois bien les messages de l'Arduino mais:
1: les caractères accentués ne passent pas, et
2: il ne répond pas aux messages envoyés depuis le PC.
Peut-être une question de paramétrage. Pourtant c'est symétrique?
Merci pour toute idée sur la question.
JPM06
Pierre59:
Bonjour
Je fais cela couramment entre un Arduino et un Mac qui utilise un programme maison en Processing.
Ces transmission de font dans les deux sens, mais attention on transmet des octets (bytes) donc les caractère ne peuvent être que des caractères ascii, pas d'accents. Il est toutefois possible d'avoir des caractères accentués, mais il faut utiliser deux octets par caractères (codage des caractères Unicode) et faire quelques bricolages.
Pierre
JPM06:
Merci, Pierre. Pour ce qui est des caractères accentués, je ferai sans ou je verrai ça plus tard.
Mais il reste l'autre problème, bien plus ennuyeux: Arduino semble ne pas recevoir les commandes que je lui envoie.
C'est pourtant du texte tout simple, sans accent. Par exemple "?" ou bien "iti".
Faut-il que je lui envoie en UTF-8 aussi? Comment? Les CR / LF à la fin aussi en UTF-8?
JPM06
---
Pierre59:
ll faudrait montrer le programme Arduino, éventuellement le programme su PC.
Pierre
Thierry:
--- Citation de: JPM06 le mars 15, 2020, 06:01:51 pm ---C'est pourtant du texte tout simple, sans accent. Par exemple "?" ou bien "iti".
Faut-il que je lui envoie en UTF-8 aussi? Comment? Les CR / LF à la fin aussi en UTF-8?
--- Fin de citation ---
Comme je l'ai expliqué dans l'article sur les chaines de caractères, les processeurs et donc les liaisons série ne savent pas ce qui transite sur leurs fils. Ils voient passer des bits, et donc des octets, rien d'autre. C'est celui qui écrit sur le bus, et celui qui lit qui interprètent. Le fait qu'il y ait des accents ou de la ponctuation n'intervient pas...
Comme la liaison série ne sait pas ce qu'elle transporte, il est tout à fait possible d'y passer des caractères accentués par exemple en utilisant une table ASCII étendu de code 850 qui regroupe presque la totalité des caractères francophones. En pratique, cela signifie envoyer un octet de valeur 130 pour un 'é', recevoir ce même 130 de l'autre côté et l'interpréter comme un 'é' ! Sur un clavier Windows Français, dans n'importe quelle application acceptant du texte, vous pouvez d'ailleurs presser la touche Alt et taper 130 sur le clavier numérique. Vous verrez apparaître ce fameux 'é'.
Tout ça pour dire que peu importe ce qui passe pour une liaison série, le moniteur de Arduino IDE devrait au moins afficher des caractères cabalistiques si quelque chose passait... Ce qui me fait penser que le problème vient plus certainement du protocole, voire de la liaison physique. Même si la vitesse est mauvaise, même si les paramètres de transmission ne sont pas bons, des 'trucs' devraient quand même passer. Attention aussi à l'usage de Serail.print() qui doit être suivi par un Serial.println() sinon rien ne sera affiché sur le moniteur !
Navigation
[#] Page suivante
Utiliser la version classique