IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Pb Calcul Checksum


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut Pb Calcul Checksum
    Bonjour à tous,

    Je dois envoyer une trame via RS qui contient un checksum...

    Actuellement je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Dim Buffer(lstBytes.Count) As Byte
            For i = 0 To lstBytes.Count - 1
                Buffer(i) = lstBytes(i)
            Next
     
            Dim checksum As Integer = 0
     
            For Each x As Byte In Buffer
                checksum = (x + checksum)
            Next
            Buffer(lstBytes.Count) = CByte(checksum) 'J'ai testé avec And &HFF, ou Mod 256
     
            SerialPort1.Write(Buffer, 0, Buffer.Count)
    Dans la doc il me mettent ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    All commands have a checksum byte appended.  The sum of all bytes in the command, including the checksum byte, should add up to A5h.
    Et une commande type ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     lstBytes.Add(&H1F)
            lstBytes.Add(&HE0)
            lstBytes.Add(&H0)
            lstBytes.Add(&HD)
    Mais l'équipement me renvoie une erreur de calcul de checksum. Surtout je ne comprend pas le should add up to A5h.

    Pouvez-vous m'aider ?! Merci !

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    je ne vois pas trop ce qu'ils veulent dire par là

    après il n'y a que 256 possibilité pour le checksum, tu peux tenter les 256 dans une boucle pour repérer le bon, et après tu cherches le rapport avec A5 (165 dec)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je ne vois pas trop ce qu'ils veulent dire par là

    après il n'y a que 256 possibilité pour le checksum, tu peux tenter les 256 dans une boucle pour repérer le bon, et après tu cherches le rapport avec A5 (165 dec)
    J'ai suivi ton conseil, le bon checksum est 153 dec. Je vais tester une autre commande et voir pour trouver une correspondance...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Voilà ce que ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lstBytes.Add(&H1F)
    lstBytes.Add(&HE0)
    lstBytes.Add(&H0)
    lstBytes.Add(&H1)
    A comme bon checksum 165

    et la commande original où seul le dernier byte change (13 et non 1 comme précédemment)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lstBytes.Add(&H1F)
    lstBytes.Add(&HE0)
    lstBytes.Add(&H0)
    lstBytes.Add(&HD)
    A comme bon checksum 153

    Maintenant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lstBytes.Add(&H1F)
    lstBytes.Add(&HE0)
    lstBytes.Add(&H0)
    lstBytes.Add(&H2)
    le bon checksum est 164

    Une idée d'un calcul logique ?

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    oui, tu peux me donner le chk pour AA et 05 pour être sûr ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Pour 5, le checksum est 161.

    Mais je ne peux pas te donner pour AA.

    L'équipement n'accepte, en décimal, qu'une valeur qui va de 0 à 15.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Il serait intéressant de donner ta définition de checksum!

    Car a ma connaissance c'est la somme de bits à 1 en ne comptant pas la retenue.

    Ainsi 255 + 1= 0.

    10 xor Ff nous retourne 1 bit (je parle d'un xor bit à bit)'qui devait être sommé à la valeur précédente sans retenue!

    Je n'ai pas l'impression que c'est ce que fait ton code.
    Dernière modification par Invité ; 30/09/2016 à 17h12.

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    chaque protocole de dialogue peut implémenter sa propre somme de controle, en la définissant ; parfois elle est beaucoup plus complexe qu'une simple somme modulotée©
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Défi calcul checksum
    Par Toto33Roxx dans le forum Windows
    Réponses: 1
    Dernier message: 17/02/2015, 13h19
  2. [Forum] Calcul checksum 8bit crc32()
    Par svan1812 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 26/09/2014, 12h00
  3. Comment Calculer Checksum 32 bit d'un Fichier
    Par kassimitec dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/08/2009, 19h20
  4. Calculer checksum d'une entête ip
    Par snyfir dans le forum Développement
    Réponses: 0
    Dernier message: 21/05/2009, 17h28
  5. Probleme calcule checksum
    Par nuFox dans le forum Réseau
    Réponses: 17
    Dernier message: 19/02/2008, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo