[Programmation] [ARDUINO] - Précisions sur envoi et réception SERIE
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

[ARDUINO] - Précisions sur envoi et réception SERIE



  1. #1
    diesel52

    [ARDUINO] - Précisions sur envoi et réception SERIE


    ------

    Bonjour à tous !

    J'aurais aimé avoir quelques précisions sur l'écriture et la réception sur le BUS série, des Arduinos. Ainsi, je fais appel à tous les Arduiniste de ce forum, pour éventuellement m'enlever un tronc du pied. (Ce n'est plus un épine à ce stade !)

    Première précision :

    Voila, il existe Serial.Write et Serial.print.

    Je sais que Write envoi des bytes, et que Print envoi des éléments convertis ASCII, exploitable par un moniteur.

    Mais je n'ai pas bien compris la différence... Si j'envois le nombre 65 sur le bus série, on écrira quand même "01000001" dessus non ? C'est au moniteur de se débrouiller pour savoir s'il doit afficher un A, ou 64 ?

    Si je veux envoyer un message composé d'une Lettre, et de deux numéros, par exemple "P22" et que ce message est à destination d'un ordinateur.

    Dois-je utiliser Print, ou dois-je utiliser Write ?


    Seconde précision :


    Enfin, sur un bus série, généralement on écrit un byte de start, les bytes de données, et un byte de stop.
    Comment sont gérés les Bytes de start et de stop sur Arduino ? Les génères elle automatiquement ?
    Ou dois-je encadrer la ligne de code qui envoi les données de deux autres lignes contenant une valeur dite de stop et dite de start ?


    Un millier de merci d'avance,
    A bientôt !

    -----

  2. #2
    DAUDET78

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Citation Envoyé par diesel52 Voir le message
    Si j'envois le nombre 65 sur le bus série, on écrira quand même "01000001" dessus non ?
    Tu es un peu dans le brouillard avec le bus série !

    Un bus série asynchrone transfere des octets qui sont "empaquetés" par un bit "1" de start, un bit de parité (pas forcément) et un bit "0" de stop
    Si on envoi le chiffre 65 (base 10),donc 41 en Hexa, tu as un octet 01000001 qui est transmis et reçu par le machin qui le reçois .(les bits start, parité et stop sont insérés/retirés par l'UART)
    Si c'est un terminal et automatiquement car il travaille en code ASCII, il affiche la lettre "A" sur l'écran
    C'est au moniteur de se débrouiller pour savoir s'il doit afficher un A, ou 65 ?
    Non il affiche "A" . si tu veux qu'il affiche "65", il faut envoyer les codes ASCII de "6" et de "5" soit 00110110 et 00110101 ( valeur 36 et 35 en hexa)
    Dernière modification par DAUDET78 ; 19/01/2016 à 19h14.
    J'aime pas le Grec

  3. #3
    lpt1com2

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Bonjour,
    C’est ton compilateur qui sait s’il doit envoyer des octets (donc des valeurs binaires, sinon ce serait des chars) ou de l’ASCII, selon que tu utilises la commande write ou print.
    Les bits (et non pas les bytes !) de start et de stop font partie de la gestion UART implémentée et géré par ton µC.

    Oups! en postant mon message, j'ai vu que Daudet avait déjà répondu (et mieux que moi...)
    Dernière modification par lpt1com2 ; 19/01/2016 à 19h21.

  4. #4
    diesel52

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Merci beaucoup pour vos aides !

    On m'a dit que souvent, dans les langages de programmation, on utilisait la commande "CR" comme fin de message.

    CR s'écrit bien sur plusieurs bits qui forment un octet non ? "0001101"
    Il n'est donc pas considéré comme un byte de stop ?

    Pour revenir à Arduino :

    Lorsque j'écris Serial.write(65);

    Envoi t-il automatiquement les bits de start et de fin ?

    Ou cela doit s'écrire manuellement ?

  5. A voir en vidéo sur Futura
  6. #5
    DAUDET78

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Citation Envoyé par diesel52 Voir le message
    On m'a dit que souvent, dans les langages de programmation, on utilisait la commande "CR" comme fin de message.
    Le Cariage Return est agréable car il correspond au "retour chariot"
    Si on expédie des lignes de caractères successives qui commencent par le code 0A (Line Feed ou avance papier 00001100) , ca s'écrit tout seul sur le papier de l'imprimante ou sur l'écran .

    CR s'écrit bien sur plusieurs bits qui forment un octet non ? "0001101"
    Oui
    Il n'est donc pas considéré comme un byte de stop ?
    un byte de stop n'existe pas !

    Lorsque j'écris Serial.write(65);
    Perso, je ne connais pas la programmation en C
    Envoi t-il automatiquement les bits de start et de fin ?
    On t'as expliqué deux fois que ce n'est pas le programmeur qui les rajoute, mais l'UART du µC !
    Citation Envoyé par Daudet
    les bits start, parité et stop sont insérés/retirés par l'UART
    Citation Envoyé par lpt1com2
    Les bits (et non pas les bytes !) de start et de stop font partie de la gestion UART implémentée et géré par ton µC.
    Tu ne sais pas lire ?
    Dernière modification par DAUDET78 ; 19/01/2016 à 20h24.
    J'aime pas le Grec

  7. #6
    diesel52

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Ne nous énervons pas !

    Effectivement vous me l'avez dit deux fois... Tout ne rentre plus très bien ces temps-ci... !

    Donc si je souhaite, En plus du bit de stop, que l'octet CR clôture le message, c'est à moi de le faire dans le programme.

    J'envois mes octets de données, mon octet CR, et c'est tout. L'UART envoi tout ça en prenant soins d'ajouter un bit de start et un bit de stop.

    Merci pour vos lumières !

  8. #7
    DAUDET78

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Citation Envoyé par diesel52 Voir le message
    que l'octet CR clôture le message, c'est à moi de le faire dans le programme.
    c'est un choix parmi d'autres .

    J'envois mes octets de données, mon octet CR, et c'est tout. L'UART envoi tout ça
    Un conseil : Met un Line Feed en tête de ton message . Tu me remercieras .....
    en prenant soins d'ajouter un bit de start et un bit de stop.
    sur chaque octet envoyé !
    J'aime pas le Grec

  9. #8
    diesel52

    Re : [ARDUINO] - Précisions sur envoi et réception SERIE

    Line Feed + Cariage Return. C'est noté. Les messages seront d'autant plus "encadrés".

    Merci beaucoup à vous deux pour votre aide !

Discussions similaires

  1. Envoi réception trame bus can
    Par iboulb dans le forum Électronique
    Réponses: 22
    Dernier message: 17/02/2014, 15h33
  2. envoi reception trames bus can
    Par iboulb dans le forum Électronique
    Réponses: 2
    Dernier message: 27/01/2014, 08h55
  3. 2eme pc en wifi, probleme reception/envoi d'octets
    Par invite56ac6061 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 06/08/2006, 12h29
  4. Envoi et reception d'un signal
    Par invite8216389 dans le forum Électronique
    Réponses: 6
    Dernier message: 04/03/2006, 16h53
  5. Envoi/Réception SMS par le net
    Par invite58238e9a dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 21/06/2005, 20h55
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...