rs232 and checksum
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

rs232 and checksum



  1. #1
    invite3e3ea017

    rs232 and checksum


    ------

    Bonjour

    Je suis entrain de faire un programme pour obtenir la valeur d’un balance apartir de port série la commande de ce balance est comme suite :

    <STX><DONNEes(longueur variable)><CHECKSUM(2 bytes)><CR><LF>

    mais j’ai pas comprend cette partie de la commande :
    est ce qu’il y a quelqu’un qui m’expliquer cette partie

    -----

  2. #2
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par Xman_fr
    Bonjour

    Je suis entrain de faire un programme pour obtenir la valeur d’un balance apartir de port série la commande de ce balance est comme suite :

    <STX><DONNEes(longueur variable)><CHECKSUM(2 bytes)><CR><LF>

    mais j’ai pas comprend cette partie de la commande :
    est ce qu’il y a quelqu’un qui m’expliquer cette partie
    Bonjour,
    Donc tu essais de récupérer un message indiquant un poids (sans doute) depuis une balance par RS232 (ce ne serait pas une Mettler par hasard?).
    Le checksum est un nombre construit à partir des octets précédants du message, en général le STX et ta zone DONNEES. Il est calculé en général par un XOR sur tous les octets. Il sert au récepteur à contrôler que le message reçu est bien celui émis par l'émetteur, parce que les liaisons RS232 peuvent être bruitées et donc transmettre des erreurs.
    Voilà pour le général. Pour le particulier, le mode de calcul de ton Cheksum doit figuré dans la documentation de ta balance (il est probable que ce soit un XOR mais il vaut mieux vérifier!).

  3. #3
    invite3e3ea017

    Re : rs232 and checksum

    merci
    voila c'il y a dans la documentation :
    "le checksum sera le résultat d'un OU exclusif de tous les bytes précédents le checksum ( y compris le caractère début de trame <STX> si validé dans les paramètres "communication" et du nombre de bytes du mesage . les caractères <CR> et <LF> ne sont pas intégrés dans ce calcule ( il son situés aprés le checksum).
    le résultat est divisé en 2 bytes ; a chacun des bytes, on ajoute 0X30"
    mano je veux savoir le trame que je vais envoyer

  4. #4
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par Xman_fr
    merci
    voila c'il y a dans la documentation :
    "le checksum sera le résultat d'un OU exclusif de tous les bytes précédents le checksum ( y compris le caractère début de trame <STX> si validé dans les paramètres "communication" et du nombre de bytes du mesage . les caractères <CR> et <LF> ne sont pas intégrés dans ce calcule ( il son situés aprés le checksum).
    le résultat est divisé en 2 bytes ; a chacun des bytes, on ajoute 0X30"
    mano je veux savoir le trame que je vais envoyer
    c'est ce que je t'avais répondu (OU exclusif = XOR).

    Pour calculer ton checksum, tu dois programmer une boucle qui parcourt ton buffer de message en partant du STX jusqu'au dernier octet de données. Dans cette boucle tu fais un XOR comme ça : CHECKSUM = CHECKSUM XOR Buffer[i]. Pense à initialiser à 0 CHECKSUM avant ta boucle.
    Ensuite, il faut décomposer ton CHECKSUM en deux octets, en séparant l'octet de poids fort et l'octet de poids faible. Si l'octet de poids fort est nul (CHECKSUM <= 255), donne lui la valeur 0x30 (espace).

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

    Wink Re : rs232 and checksum

    désolé car je suis débutant ,
    est ce que tu peux m'envoie la trame que je vais l'envoie.
    par exemple : mscomm1.output = "<STX><CRLF>"
    et merci beaucoup

  7. #6
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par Xman_fr
    désolé car je suis débutant ,
    est ce que tu peux m'envoie la trame que je vais l'envoie.
    par exemple : mscomm1.output = "<STX><CRLF>"
    et merci beaucoup
    Dans ton exemple, la zone de données est vide. le checksum portera donc uniquement sur le <STX>.
    La trame à envoyer sera donc:
    <STX><CHECKSUM1><CHECKSUM2><CR ><LF>
    où CHECKSUM1 = 0x30 (car CHECKSUM2 < 255) et CHECKSUM2 = 0 XOR <STX> = <STX>

  8. #7
    umfred

    Re : rs232 and checksum

    à mon avis le checksum est calculé sur un octet, puis l'octet est séparé en deux pour pouvoir être transmis sous forme ASCII.
    par exemple si le CHECKSUM à la fin du calcul vaut 0x24 (en hexadécimal) alors CHECKSUM1 = 0x32= "2" et CHECKSUM2 = 0x34 = "4".

    Donc pour ton exemple de trame vide:
    mscomm1.output=<STX><CHECKSUM1 ><CHECKSUM2><CR ><LF>
    ça donnerai:
    mscomm1.output = chr(0x02) & chr(0x30) & chr(0x32) & chr(0x0D) & chr(0x0A)
    car:
    <STX> = chr(0x02)
    CHECKSUM1 = chr(0x30)
    CHECKSUM2 = chr(0x32)
    <CR> = chr(0x0D)
    <LF> = chr(0x0A)

    Remarque: le caractère <espace> a pour code ASCII 0x20; 0x30 correspodant à "0".

  9. #8
    invitef2ea68d7

    Re : rs232 and checksum

    A relire la notice indiquée par Xman, tu as sans doute raison!
    Et oui, autant pour moi, l'espace c'est 0x20...

  10. #9
    invite3e3ea017

    Re : rs232 and checksum

    Merci beaucoup ...
    j'ai envoie
    MSComm1.Output ="<STX><CHECKSUM1 ><CHECKSUM2><CR><LF>"
    et
    MSComm1.Output = "chr(0x02) & chr(0x30) & chr(0x32) & chr(0x0D) & chr(0x0A)"
    mais j'ai aucun réponse

  11. #10
    umfred

    Re : rs232 and checksum

    Normal tu n'envoie aucune commande à ta balance.
    Les commandes doivent être décrites dans le manuel avec la trame de réponse associée.

    On t'a juste expliqué comment calculer et mettre en forme le cheksum pour l'envoyer.

  12. #11
    invite3e3ea017

    Thumbs up Re : rs232 and checksum

    bonjour
    voila j'ai la trame suivante :
    <STX><$><2><4><CR><LF>
    comment je peux envoie cette trame ??

  13. #12
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par Xman_fr
    bonjour
    voila j'ai la trame suivante :
    <STX><$><2><4><CR><LF>
    comment je peux envoie cette trame ??
    Bonjour,

    Il faut tu commences par composer ta trame en concatenant les caractères STX, $, 2 et 4 (avec des + en basic).

    Puis tu calcules le check sum comme indiqué précédement. Tu obtiens 2 caratères que tu concatènes avec la trame construite.
    Enfin tu ajoutes CR et LF à la fin de ta trame et tu l'envoies...

    Tu vas avoir qq chose comme:
    trame = STX+$+2+4+CS1+CS2+CR+LF
    vérifie la syntaxe, je ne suis pas un pro de basic...

  14. #13
    umfred

    Re : rs232 and checksum

    A mon avis, domlefebvre, le <2> et le <4> sont les checksums calculés (et dans ce cas là il y a une erreur de calcul car "STX" xor "$"=0x02 xor 0x24 =0x26, et donc ca serait <2> et <6> qu'il faudrait envoyer )

    @Xman_fr: pourrai tu nous donner la référence de ta balance, on pourra t'aider plus facilement pour ta commande

  15. #14
    invite3e3ea017

    Re : rs232 and checksum

    Bonjour
    c'est la marque EXA
    model: CYBER(III)
    de la société GROUP EPELSA.SL.
    j'ai envoie la trame "STX$24" et j'ai obtenu une chaine de caractaire comme "┐w1" et dans l'indicateur j'ai 760 Kg

  16. #15
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par umfred
    A mon avis, domlefebvre, le <2> et le <4> sont les checksums calculés
    Tu crois? Parce que dans ce cas, aucune commande n'est envoyée à la balance! le STX marque le début de trame et le CRLF la fin de trame. Donc pas d'octet de commande! Curieux...

  17. #16
    umfred

    Re : rs232 and checksum

    Citation Envoyé par domlefebvre
    Tu crois? Parce que dans ce cas, aucune commande n'est envoyée à la balance! le STX marque le début de trame et le CRLF la fin de trame. Donc pas d'octet de commande! Curieux...
    apparement je me suis trompé vu qu'il a eu une réponse.

  18. #17
    invite3e3ea017

    Re : rs232 and checksum

    Bonjour
    j'ai envoie la trame "STX$24" et j'ai obtenu une chaine de caractaire comme "┐w1" et dans l'indicateur j'ai 760 Kg
    mano je veux savoir l'explication de !!!"┐w1"!!!

  19. #18
    invitefac0a815

    Re : rs232 and checksum

    bonjour,

    Le fait que tu recoive une trame avec des caractères bizarre vient sans doute du fait d'une mauvaise configuration de la communication en RS 232.

    J'ai l'impression qu'il manque des informations sur ton probleme.

    Gere tu correctement le liaison serie (vitesse de transmission, bits utiles, bits de stop,...)

    Quel est le protocole de communication?
    <STX> est une balise comme <CR><LF>

    et comme dis précédement ta trame doit etre envoyé sous forme ASCII c pour ca que ton checkcum d'un octet sera envoyé sur deux octet.

    Ce qu'il faut c savoir quelle est la commande à passé pour piloter ta balance.

    On ne peut te construire une trame par magie ca ne marche pas comme ca.

    Par exemple, je programme via une liaison Série RS232 sous protocole Konnex de l'embarqué pour communiqé avec une équipement pour gerer les entrées sorties.

    si je demande à quelqu'un de me construire une trame pour changer l'état de la sortie 2 de l'équipement il va falloir pas mal d'info pour la construire cette Trame.

    Je sais pas si je que je raconte est tràs mais m'enfin .

    T'hesite pas à me dire.

  20. #19
    invitef2ea68d7

    Re : rs232 and checksum

    Citation Envoyé par Xman_fr
    Bonjour
    j'ai envoie la trame "STX$24" et j'ai obtenu une chaine de caractaire comme "┐w1" et dans l'indicateur j'ai 760 Kg
    mano je veux savoir l'explication de !!!"┐w1"!!!
    Si la balance comprend la trame envoyée et qu'elle te retourne qq chose, il est assez probable que la liaison RS232 est bien configurée. Contrôle quand même la vitesse, on ne sait jamais.

    Maintenant, pour comprendre la chaîne que tu cites, il faut se poser plusieurs questions:
    1- est-ce bien tous les caractères que tu reçois? Ou bien est-ce seulement ceux que tu affiches avec ton programme basic?
    2 - ta doc dit quoi à propos du code utilisé par ta balance pour retourner le poids : est-ce de l'ASCII bête et méchant? Autre chose? En cas d'ASCII pur et dur, tu devrais avoir trois octets codés <55> <54> <48> si je suppose le code décimal ou <37> <36> <30> en hexa. Il doit y avoir un STX en début, puis deux octets de checksum après le poids puis un CRLF. Enfin, c'est probable. Que dit ta doc à ce sujet?

    De manière générale, pour contrôler la trame de retour, affiche le code ASCII de chaque octet reçu au lieu d'employer un print de la trame (qui ne veut rien dire).

  21. #20
    invite3e3ea017

    Re : rs232 and checksum

    Bonjour
    le protocole de communication c'est EPLO3

  22. #21
    umfred

    Re : rs232 and checksum

    Il faut que tu suive exactement ce qui est mis dans la notice concernant le protocole de communication (vitesse, parité, bite de start, bit de stop, etc etc).
    Ensuite tu dois disposer dans cette notice de l'ensemble des trames avec une description de leur signification (tel octet correspond à tel paramètres, etc etc).
    Si tu veux de l'aide précise, il faudrait nous envoyer en pièces jointes cette notice (si tu dispose d'une version électronique de celle-ci (pdf)) ou un scan des pages où la fonction sur laquelle tu veux de l'aide est décrite.

  23. #22
    invite3e3ea017

    Thumbs up Re : rs232 and checksum

    Ok et merci beaucoup
    j'ai réussir j'ai rénitialiser le robot
    Merci beaucoup

Discussions similaires

  1. Rs232
    Par invite3040abe6 dans le forum Électronique
    Réponses: 5
    Dernier message: 11/12/2007, 20h37
  2. Rs232
    Par invitedba2660f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/01/2007, 23h52
  3. Calcul Checksum pour Transfert RS232
    Par invitee9004dcd dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 30/08/2006, 19h40
  4. 1-wire et RS232
    Par invited5dc361e dans le forum Électronique
    Réponses: 1
    Dernier message: 02/06/2006, 11h32
  5. rs232-cl
    Par invite21c5bba1 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/01/2004, 22h32
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...