akuvido
Messages postés13Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention18 avril 2006
-
12 avril 2006 à 13:06
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
13 avril 2006 à 11:11
Bonjour,
Je dois pour une communication entre PC et automate analysé un protocole.
En l'analysant je me suis rendu compte que il y avais des CRC's ( verification de trame par ajout d'octet en fin de trame ).
J'ai alors demandé au constructeur de l'apareil la maniere de calculer le crc.
Celui ci m'as alors fourni les codes suivant :
Il y en 2 car il y a deux type de Crc sont utilisé
Malheusement pour moi, J'ignore totalement le Language C car je dois pour se projet travailler en Visual basic.
J'aurai voulu savoir si il y avais ame charitable qui pourrais m'expliquer le fonctionnement de ce code pour que je puisse alors le traduire en Visual basic.
Apres quelque recherche, j'ai pu comprendre que le ^ est un Ou exclusif , le & un ET binaire et >>X sont des decalage de bits et que le X est le "nombre" de rang du decalage et le sens des > le sens du decalage.
public function calcHeaderCRC (datavalue as integer, crcvalue as integer) as integer
dim crc as integer
crc = crcvalue xor datavalue
crc = crc xor (crc *2) xor (crc*4) xor (crc*8) xor (crc*16) xor (crc*32) xor (crc*64) xor (crc *128)
calcHeaderCRC = (crc and &HFE) Xor ((crc * 256) And 1)
end function
mais mon probleme se situe autre part maintenant car vu le nombre de multiplication, j'arrive a un overflow a tout les coups !
J'aurai voulu savoir si sous C ce probleme est egalement present.