VBA bit / octet / traitement

Fermé
Module_29 Messages postés 26 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 8 juin 2012 - 31 mai 2012 à 22:26
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 2 juin 2012 à 08:21
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

A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 1/06/2012 à 08:02
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
Module_29 Messages postés 26 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 8 juin 2012
1 juin 2012 à 10:58
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
1 juin 2012 à 20:57
Bonjour,
Je vous fais un petit programme vba qui vous permetra de mieux comprendre.

A bientot
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
2 juin 2012 à 08:21
Bonjour,

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

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


Bonne suite
0