VBA bit / octet / traitement

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. 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
    1. 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
      1. Bonjour,
        Je vous fais un petit programme vba qui vous permetra de mieux comprendre.

        A bientot