Auteur Sujet: Communication via USB avec un moniteur série non IDE - résolu  (Lu 20300 fois)

JPM06

  • Newbie
  • *
  • Messages: 49
    • Voir le profil
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
« Modifié: mars 20, 2020, 10:52:10 am par JPM06 »

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE
« Réponse #1 le: mars 15, 2020, 05:20:38 pm »
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

  • Newbie
  • *
  • Messages: 49
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE
« Réponse #2 le: mars 15, 2020, 06:01:51 pm »
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

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE
« Réponse #3 le: mars 15, 2020, 06:36:50 pm »
ll faudrait montrer le programme Arduino, éventuellement le programme su PC.

Pierre

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Re : Communication via USB avec un moniteur série non IDE
« Réponse #4 le: mars 16, 2020, 09:09:21 am »
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?

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 !

JPM06

  • Newbie
  • *
  • Messages: 49
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE
« Réponse #5 le: mars 17, 2020, 06:48:23 pm »
Bonjour,

Pour être plus clair, je joins le petit programme en question.
Et oublions pour l'instant la réponse de Pierre au sujet des caractères UTF-8, je m'en passerai.

L'idée est pouvoir commander l'Arduino avec des messages texte.
Le programme comprend les commandes indiquées dedans.
Par exemple:
  en tapant ? on en a la liste.
  en tapant xxx 56 on donne la valeur 56 à la variable xxx
  en tapant xxx ? on demande la valeur de la variable xxx,
et idem pour l'eeprom, le bus I2C et d'autres que j'ai otées pour clarifier.

Le problème: ça fonctionne très bien depuis l'IDE, mais pas depuis un émulateur de terminal (j'en ai trois) ou depuis mes propres programmes en VisualBasic, ce qui est le but final.

Merci de votre aide,

JPM06

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE
« Réponse #6 le: mars 17, 2020, 09:23:51 pm »
Bonsoir,
si le problème est de vouloir commander l'Arduino via des caractères série sur l'USB, peut-être que les paramètres RS232 ne sont pas OK, nb bits, Stop, nb bauds mais je n'ai pas bien compris la manip. La conversion USB/série a peut-être des délais imprévus.
En tout cas, la communication série entre Arduino fonctionne sans problème comme utilisée dans le sniffer de Rudy, version moniteur autonome :
https://forum.locoduino.org/index.php?topic=461.msg4662#msg4662
A tester un convertisseur externe, genre FTDI.
« Modifié: mars 17, 2020, 09:27:31 pm par msport »
Cordialement

JPM06

  • Newbie
  • *
  • Messages: 49
    • Voir le profil
Re : Communication via USB avec un moniteur série non IDE - résolu
« Réponse #7 le: mars 20, 2020, 10:51:41 am »
Bonjour à tous,
Pour clore le sujet, voici le problème et la solution: l'IDE envoie à Arduino des chaînes de caractères se terminant par LF (ASCII 10) et seulement LF, alors que les émulateurs série que j'utilisaient ajoutent CR+LF, ou rien du tout.
En les paramétrant correctement, ça fonctionne bien. C'était tout bête.
Merci.
JPM06