Hexa [Résolu]

Signaler
Messages postés
46
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
9 décembre 2012
-
cs_AGG
Messages postés
46
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
9 décembre 2012
-
Bonjour, voila j'ai une camera, il faut lui parler en Hexa lol

J'ai juste un souci pour calculer le checksum en vb6.
J'ai la solution en javascript, mais je n'arive pas a faire la mème chose en VB

il y a 5 Byte
01 00 04 3f 00

Pour le 6 Byte il faut faire l'opération

Code en javascript

<script>
var checksum = parseInt("01",16)+parseInt("00",16)+parseInt("04",16)+parseInt("3f",16)+parseInt("00",16);
alert(checksum.toString(16));
</script>


J'ai testé plusieur chose mais en vin ...

7 réponses

Messages postés
14670
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
139
Bonjour,

Mais si tu dépasse la valeur de 255 ?

Sinon pour le code en VB6, si tu as tes données dans un tableau d'octet, ça simplifie la chose.

Enfin, pour convertir :
Hex -> Int
Val("&h" & ValeurAConvertir)
Int -> Hex
HEX$(ValeurAConvertir)

Note : Hex retourne le minimum de chiffres possible, il faut combler avec des zéros si il faut avoir la bonne taille :
Right$(string$(NbZero,"0") & HEX$(ValeurAConvertir), NbZero)

Mon site
Messages postés
14670
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
139
Bonjour,

alvinemambele> poste une nouvelle question, tu sors du sujet.

'Pelco-D Protocol Message
Public function Pelco_D_Message(ByVal action1 as byte,ByVal  action2 as byte,ByVal  panspeed as byte,ByVal titlespeed as byte) as String
  dim ltData() as Byte
  redim ltData(0 to 6)
  
  ltData(0)=Synch 'en décimal
  ltData(1)=AddrD 'en décimal
  ltData(2)=action1 
  ltData(3)=action2 
  ltData(4)=panspeed
  ltData(5)=titlespeed 
  ltData(6)=CalcChkSum(ltData,1,5)
  
  Dim lStr as string
  
  lStr="0x"
  For i=lbound(ltData) To UBound(ltData)
    lstr=lstr & right$("0" & hex$(ltData(i)),2)
  Next i
  
  Pelco_D_Message=lStr
End function

Private function CalcChkSum(ptData() as byte,Byval pOffset as long, byval pLength as long) as byte
  dim lChk as long
  dim i as long
  
  lChk=0
  
  For i=pOffset to pOffset+pLength-1
    lChk=(lChk+ptData(i))Mod 256
  Next i
  
  CalcChkSum=lChk
end function


Mon site
Messages postés
14670
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
139
Bonjour,

Il faut les mettre en décimal (1 octet par paramètre dans mon exemple)

Si tu veux mettre ces valeurs :
0f 10 02 7f
il faut mettre :
15 16 2 127
ou
&hf &h10 &h2 &h7f

Mon site
Messages postés
72
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
31 mai 2013
7
Bonjour!
Toutes mes excuse, je suis à la recherche de lumière sur la commande des relais via port Impriment(LPT). j'ai un montage qui nécessite les impulsion logique du port LPT. à ce que j sais est que de la broche 2 à 9 ces sont des donnée et de 18 à 25 ce sont les broches de masse fini.

voila j vous prie pour l'éclaircissement.
merci!


Un orateur trop long est comme une horloge qui sonne les minutes!
Messages postés
46
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
9 décembre 2012

Je te montre le code :)


//Pelco-D Protocol Message
function Pelco_D_Message(action1, action2, panspeed, titlespeed)
{
 var checksum = parseInt(AddrD,16)+parseInt(action1,16)+parseInt(action2,16)+parseInt(panspeed,16)+parseInt(titlespeed,16);
 while (checksum > 0xff)
 {
  checksum = checksum-0xff; 
 }
 if (checksum <= 0xf)
 {
  checksum = "0" + checksum.toString(16);
 }
 return "0x" + Synch + AddrD + action1 + action2 + panspeed + titlespeed + checksum.toString(16);
}


Messages postés
46
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
9 décembre 2012

quand je defini

Text1.Text = Pelco_D_Message(00, 00, 00, 00)

par exemple vb me le mais en

Text1.Text = Pelco_D_Message(0, 0, 0, 0)

:s
Messages postés
46
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
9 décembre 2012

Merci de ta patience nicolas !

Tout fonctionne impécablement !

Je te suis trés reconnaissante pour ton aide. Un grand merci à toi !