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

    A bientot
    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,

        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