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 :

Calcul du checksum et convertion d'un decimal en hexa


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut Calcul du checksum et convertion d'un decimal en hexa
    bonjour à tous ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Calcul_checksum()
    Dim TabEnvoyé As Byte() = New Byte(12) {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
     
    TabEnvoyé(0) = &H2 ' initialisation_connection(0)
    TabEnvoyé(1) = &H3F ' initialisation_connection(1)
    TabEnvoyé(2) = &H30 ' Id(0)
    TabEnvoyé(3) = &H31 ' Id(1)
    TabEnvoyé(4) = &H31 ' Id(2)
    TabEnvoyé(5) = &H44 ' Type_registre(0)
    TabEnvoyé(6) = &H52 ' Type_registre(1)
    TabEnvoyé(7) = &H48 ' Registre(0)
    TabEnvoyé(8) = &H52 ' Registre(1)
    TabEnvoyé(9) = &H30 ' Nb_registre(0)
    TabEnvoyé(10) = &H31 ' Nb_registre(1)
    TabEnvoyé(11) = &H30 ' Nb_registre(2)
    TabEnvoyé(12) = &H31 ' Nb_registre(3)
     
     
    Dim Somme As Integer = 0
     
     
    ' Calcul du Cheksum de la trame Envoyé
    For Each x As Byte In TabEnvoyé
    Somme = Somme + x
    Next
     
    Dim aa As String = Hex(Somme)
    voilà je viens de faire ce programme mais maintenant je ne sais pas comment faire pour convertir un nombre decimal en Hexa puis le stocker dans un byte
    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut


    je ne vois pas ou est ton probléme ...

    je ne sais pas comment faire pour convertir un nombre decimal en Hexa puis le stocker dans un byte
    je supose que c'est pour envoyer une trame sur 12 octets
    pourquoi ne pas garder ta trame en décimale ??
    l'outil "SerialPort" gère très bien tout sa *testé et approuvé*

    il suffit juste de le configurer selon ton protocole (bit de start, stop, parité, etc.)

    je n'ais pas répondu a ta question,
    il va garder le nombre décimale quoique tu fasse dans le byte
    quel intérêt a tu après a le vouloir en héxa ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Ok désolé pour la balise code

    Lorsque je tente , je vois que mon aa =2C5 et moi je veux voir que aa=C5

    Et apparement , d'apres un ami je devrais convertir un nombre decimal en hexa puis le stocker dans un byte
    Je débute evidement en visual basic

  4. #4
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    hummm je voi pas pourquoi le "2C5" te gène
    la calculette de windows dit la même chose

    après si tu ne veut que les deux dernier caractères c'est une autre histoire
    tu peut utiliser la fonction mid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strTest = Mid(tonString, Start, lenght)
    sa peut extraire ton "C5" comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strTest = Mid( aa, 2,2)
    ou pour un usage plus universel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strTest = Mid( aa, aa.Length -1 ,2)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Je ne vois pas comment on peut stocker un nombre décimal dans un byte !

    Par contre transformer un nombre décimal en tableau d'octets ça c'est possible.
    il faut regarder du coté de la classe bitconverter et sa méthode GetBytes.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    strTest = Mid( aa, 2,2)

    il faut que je déclare strTest comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim strTest As ......
    Je vois pas la suite: je débute

  7. #7
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut


    je te donne des tuyaux alors * disons plutôt de la rigueur*

    quand tu déclare tu met en minuscule ce que c'est avant suivi du nom de ton élément avec un Majuscule.
    exemple:
    pctPalette => PictureBox
    txtNomBoite => TextBox
    lblNomBoite => Label
    tmrBoite => Timer
    intNumBoite => Integer
    strNomBoite => String
    spRS232 => SerialPort
    etc.

    (désolé pour le style palette/boite, mon projet m'a inspiré)
    trés pratique si tu a bien déclaré tous tes éléments de ton formulaire,
    tu y accéde rapidement en tapant les 3 premier caratéres
    comme pour une textBox ou un Label, tu tape "lbl" et hop t'a tous tes labels qui s'affichent dans la liste, je dirais mm que tes labels

    image a l'appuie :


    voila,
    sachant sa du doit savoir que strTest est un string maintenant
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim strTest As String
    strTest = Mid( aa, 2,2)

  8. #8
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    ah et j'oublié
    je sais pas si c'est une bonne chose de te le dire ...
    mais quand tu sais pas quel est le type de l'objet *ou variable* que tu va utiliser
    tu peut mettre ceci:
    sa va lui attribuer un type en fonction de ce qu'il va recevoir
    (tu peut même voir le type attribué quand tu est en mode debogage)
    *pratique mais sa peut être piège par la suite ... attention*

    Bonne continuation

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Dim aa As String = Hex(Somme)
     
            Dim strTest As Object
            strTest = Mid(aa, 2, 2)

    Je le place donc comme ça dans mon code?

    en tout cas , merci à vous pour vos aides

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Comme tu ne t'en sort pas apparemment, essaie ceci pour essayer de comprendre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Dim TabEnvoyé As Byte() = New Byte(12) {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
     
            TabEnvoyé(0) = &H2 ' initialisation_connection(0)
            TabEnvoyé(1) = &H3F ' initialisation_connection(1)
            TabEnvoyé(2) = &H30 ' Id(0)
            TabEnvoyé(3) = &H31 ' Id(1)
            TabEnvoyé(4) = &H31 ' Id(2)
            TabEnvoyé(5) = &H44 ' Type_registre(0)
            TabEnvoyé(6) = &H52 ' Type_registre(1)
            TabEnvoyé(7) = &H48 ' Registre(0)
            TabEnvoyé(8) = &H52 ' Registre(1)
            TabEnvoyé(9) = &H30 ' Nb_registre(0)
            TabEnvoyé(10) = &H31 ' Nb_registre(1)
            TabEnvoyé(11) = &H30 ' Nb_registre(2)
            TabEnvoyé(12) = &H31 ' Nb_registre(3)
     
     
            Dim Somme As Integer = 0
     
     
            ' Calcul du Cheksum de la trame Envoyé
            For Each x As Byte In TabEnvoyé
                Somme = Somme + x
            Next
    'qui dans ton exemple fait forcement 709 (>255) ou 2C5 en Hexa
    'donc représenté sur 3 digits en hexa
     
            Dim bt As Byte()
            bt = BitConverter.GetBytes(Somme)
            Dim a1 As String = Hex(bt(0))
            Dim a2 As String = Hex(bt(1))
    'dans a1 j'aurais C5
    'dans a2 : 2
            Dim aa As String = Hex(Somme)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Merci , je pense que c'est bon
    Je dois rien avoir à changer

  12. #12
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    tu a oublié une chose ....

    *c'est juste en bas*

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Et cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bt = BitConverter.GetBytes(Somme)
    Elle sert à quoi : j'ai pas tout compris

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Pour tout cela il y a une chose très simple:

    Google avec comme recherche : BitConverter.GetBytes

    Et s'il y a un lien qui contient MSDNil faut vite aller le lire.

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

Discussions similaires

  1. calcul de checksum
    Par jerome86600 dans le forum Sécurité
    Réponses: 3
    Dernier message: 29/12/2007, 01h33
  2. Calcul de Checksum
    Par ktsys dans le forum C++
    Réponses: 12
    Dernier message: 11/05/2007, 09h27
  3. Recherche d'un algorithme pour calculer un Checksum
    Par noune40 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2006, 10h46
  4. Convertion Chaine vers decimal
    Par tchraad dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/11/2005, 16h43
  5. Calcul de checksum ?
    Par elitost dans le forum Windows
    Réponses: 14
    Dernier message: 21/01/2005, 13h29

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