VBA bit / octet / traitement

Module_29 Messages postés 31 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais savoir comment traiter une trame de reception hexa en un octet.

Je vous explique, je suis actuellement sur un projet VBA, j'ai realise sur excel un interface sur un userform qui dialogue avec une carte de simulation. ( avec mscomm1 )

J'envoi d'une textbox une commande et la carte me renvoi un reponse en hexa et ASCII . Par exemple pour une commande je recoi , dans ma textbox de reception en hexa "150DDA" et j'aimerai traiter cette derniere en 1 octet , sachant que les 8 bit on chacun une fonction ( un libelle si vous preferez ) et il y a donc sur cette fonction deux alternative " 0 " ou " 1 " qui correspondent a deux choix de la fonction.

J'aimerai de l'aide s'il voussoirs plait . Pour Avoir l'octet

Cordialement

4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Vous avez le choix.

    Par Hubck 18 janv. 2012
    Function Hex2Dec(Hexa As String) As Double  
      Dim i As Integer, Multi As Integer  
      Hex2Dec = 0  
      Hexa = UCase(Trim(Hexa))  
      If Not Hexa Like "*[G-Z]*" Then  
        For i = 1 To Len(Hexa)  
          Multi = CInt("&H" & (Mid(Hexa, Len(Hexa) - i + 1, 1)))  
          Hex2Dec = Hex2Dec + (Multi * 16 ^ (i - 1))  
        Next i  
      End If  
    End Function  
    

    Ensuite vous faites des test bit avec un and et les poids des bits qui vous interessent

    Ou

    Par Pierre Fauconnier 21/11/2007
    Function HexToBin(NombreHex As String) As String  
    Dim tHex, tBin  
    Dim i As Integer, j As Integer  
    Dim Binaire As String  
    Dim Trouve As Boolean  
       
    Binaire = ""  
    NombreHex = UCase(NombreHex)  
    tHex = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")  
    tBin = Array("0000", "0001", "0010", "0011", "0100", "0101", "0110", _  
         "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111")  
       
    For i = 1 To Len(NombreHex)  
        Trouve = False  
        For j = 0 To 15  
            If tHex(j) = Mid(NombreHex, i, 1) Then  
                Binaire = Binaire & tBin(j)  
                Trouve = True  
                Exit For  
            End If  
        Next j  
        If Not Trouve Then HexToBin = "": Exit Function  
    Next i  
    HexToBin = Binaire  
    End Function  
    

    Ensuite vous faites des test de caractere avec Mid(x,y,1) sur la position des bits qui vous interessent

    Bonne suite
    0
  2. Module_29 Messages postés 31 Statut Membre
     
    bonjour,

    tout d'abord merci pour les exemples, mais j'aimerai savoir comment vous faites des test bit avec un and et les poids des bits ??

    Cordialement
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Je vous fais un petit programme vba qui vous permetra de mieux comprendre.

    A bientot
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Un exemple de programme de test bits apres decodage HEXA/DECIMAL

    https://www.cjoint.com/?BFcissTpmWN

    Bonne suite
    0