begin process at 2012 05 30 05:27:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

verif CRC16


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

verif CRC16

mercredi 14 mai 2003 à 16:33:09 | verif CRC16

sena

Bonjour,

voila j'ai un pti prog pour calculer le CRC16.
Je voudrai savoir si kelkun pouvait me dire si ce code fonctionne merci. Car je n'ai qu'un seul exemple pour vérifier ...

Donc si kelkun avait un autre code ou bien si kelkun veut bien regarder ce code qui suit, ca me permettrai de savoir si ce calcul de CRC16 est correct.
C'est très important.

#define NUMDATA 2
// Calcul de CRC16
unsigned int calcul_CRC16(unsigned int crc, unsigned int data)
{
const int Poly16=0xA001;
int flag, i;

crc = (crc^data); //XOR

for (i=0; i<8; i++)
{
flag=(crc & 0x0001);//On récupère le dernier bit
crc=crc/2; //décalage a droite, pas de 1
if (flag) //Si le dernier bit vaut 1
crc=crc^Poly16; //alors on fait un Xor avec Poly16
}
return(crc);
}


int main()
{
char data[NUMDATA];
int Crc;

data[0] = 0x02;
data[1] = 0x07;

Crc=0xFFFF;

for (int i=0; i<NUMDATA; i++)
{
Crc = calcul_CRC16(Crc, data[i] );
}

return 0;
}

Merci beaucoup beaucoup beaucoup.
Sena
mercredi 14 mai 2003 à 16:38:33 | Re : verif CRC16

BruNews

Administrateur CodeS-SourceS
const DWORD crc32_table[] = {
0UL, 16777216UL, 33554432UL, 50331648UL, 67108864UL, 83886080UL, 100663296UL,
117440512UL, 134217728UL, 150994944UL, 167772160UL, 184549376UL, 201326592UL, 218103808UL,
234881024UL, 251658240UL, 268435456UL, 285212672UL, 301989888UL, 318767104UL, 335544320UL,
352321536UL, 369098752UL, 385875968UL, 402653184UL, 419430400UL, 436207616UL, 452984832UL,
469762048UL, 486539264UL, 503316480UL, 520093696UL, 536870912UL, 553648128UL, 570425344UL,
587202560UL, 603979776UL, 620756992UL, 637534208UL, 654311424UL, 671088640UL, 687865856UL,
704643072UL, 721420288UL, 738197504UL, 754974720UL, 771751936UL, 788529152UL, 805306368UL,
822083584UL, 838860800UL, 855638016UL, 872415232UL, 889192448UL, 905969664UL, 922746880UL,
939524096UL, 956301312UL, 973078528UL, 989855744UL, 1006632960UL, 1023410176UL, 1040187392UL,
1056964608UL, 1073741824UL, 1090519040UL, 1107296256UL, 1124073472UL, 1140850688UL, 1157627904UL,
1174405120UL, 1191182336UL, 1207959552UL, 1224736768UL, 1241513984UL, 1258291200UL, 1275068416UL,
1291845632UL, 1308622848UL, 1325400064UL, 1342177280UL, 1358954496UL, 1375731712UL, 1392508928UL,
1409286144UL, 1426063360UL, 1442840576UL, 1459617792UL, 1476395008UL, 1493172224UL, 1509949440UL,
1526726656UL, 1543503872UL, 1560281088UL, 1577058304UL, 1593835520UL, 1610612736UL, 1627389952UL,
1644167168UL, 1660944384UL, 1677721600UL, 1694498816UL, 1711276032UL, 1728053248UL, 1744830464UL,
1761607680UL, 1778384896UL, 1795162112UL, 1811939328UL, 1828716544UL, 1845493760UL, 1862270976UL,
1879048192UL, 1895825408UL, 1912602624UL, 1929379840UL, 1946157056UL, 1962934272UL, 1979711488UL,
1996488704UL, 2013265920UL, 2030043136UL, 2046820352UL, 2063597568UL, 2080374784UL, 2097152000UL,
2113929216UL, 2130706432UL, 2147483648UL, 2164260864UL, 2181038080UL, 2197815296UL, 2214592512UL,
2231369728UL, 2248146944UL, 2264924160UL, 2281701376UL, 2298478592UL, 2315255808UL, 2332033024UL,
2348810240UL, 2365587456UL, 2382364672UL, 2399141888UL, 2415919104UL, 2432696320UL, 2449473536UL,
2466250752UL, 2483027968UL, 2499805184UL, 2516582400UL, 2533359616UL, 2550136832UL, 2566914048UL,
2583691264UL, 2600468480UL, 2617245696UL, 2634022912UL, 2650800128UL, 2667577344UL, 2684354560UL,
2701131776UL, 2717908992UL, 2734686208UL, 2751463424UL, 2768240640UL, 2785017856UL, 2801795072UL,
2818572288UL, 2835349504UL, 2852126720UL, 2868903936UL, 2885681152UL, 2902458368UL, 2919235584UL,
2936012800UL, 2952790016UL, 2969567232UL, 2986344448UL, 3003121664UL, 3019898880UL, 3036676096UL,
3053453312UL, 3070230528UL, 3087007744UL, 3103784960UL, 3120562176UL, 3137339392UL, 3154116608UL,
3170893824UL, 3187671040UL, 3204448256UL, 3221225472UL, 3238002688UL, 3254779904UL, 3271557120UL,
3288334336UL, 3305111552UL, 3321888768UL, 3338665984UL, 3355443200UL, 3372220416UL, 3388997632UL,
3405774848UL, 3422552064UL, 3439329280UL, 3456106496UL, 3472883712UL, 3489660928UL, 3506438144UL,
3523215360UL, 3539992576UL, 3556769792UL, 3573547008UL, 3590324224UL, 3607101440UL, 3623878656UL,
3640655872UL, 3657433088UL, 3674210304UL, 3690987520UL, 3707764736UL, 3724541952UL, 3741319168UL,
3758096384UL, 3774873600UL, 3791650816UL, 3808428032UL, 3825205248UL, 3841982464UL, 3858759680UL,
3875536896UL, 3892314112UL, 3909091328UL, 3925868544UL, 3942645760UL, 3959422976UL, 3976200192UL,
3992977408UL, 4009754624UL, 4026531840UL, 4043309056UL, 4060086272UL, 4076863488UL, 4093640704UL,
4110417920UL, 4127195136UL, 4143972352UL, 4160749568UL, 4177526784UL, 4194304000UL, 4211081216UL,
4227858432UL, 4244635648UL, 4261412864UL, 4278190080UL };

DWORD __stdcall Crc32(BYTE *buffer, BYTE *buffer_end)
{
DWORD crc = 0xFFFFFFFF;
while(buffer < buffer_end)
crc = (crc >> 8) ^ crc32_table[(crc ^ *buffer++) & 0xFF];
return crc;
}

T'excuseras, j'ai que du 32.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> voila j'ai un pti prog pour calculer le CRC16.
> Je voudrai savoir si kelkun pouvait me dire si ce code fonctionne merci. Car je n'ai qu'un seul exemple pour vérifier ...
>
> Donc si kelkun avait un autre code ou bien si kelkun veut bien regarder ce code qui suit, ca me permettrai de savoir si ce calcul de CRC16 est correct.
> C'est très important.
>
> #define NUMDATA 2
> // Calcul de CRC16
> unsigned int calcul_CRC16(unsigned int crc, unsigned int data)
> {
> const int Poly16=0xA001;
> int flag, i;
>
> crc = (crc^data); //XOR
>
> for (i=0; i<8; i++)
> {
> flag=(crc & 0x0001);//On récupère le dernier bit
> crc=crc/2; //décalage a droite, pas de 1
> if (flag) //Si le dernier bit vaut 1
> crc=crc^Poly16; //alors on fait un Xor avec Poly16
> }
> return(crc);
> }
>
>
> int main()
> {
> char data[NUMDATA];
> int Crc;
>
> data[0] = 0x02;
> data[1] = 0x07;
>
> Crc=0xFFFF;
>
> for (int i=0; i<NUMDATA; i++)
> {
> Crc = calcul_CRC16(Crc, data[i] );
> }
>
> return 0;
> }
>
> Merci beaucoup beaucoup beaucoup.
> Sena
>
mercredi 14 mai 2003 à 17:06:40 | Re : verif CRC16

crocejf2000

c'est quoi le CRC ? Ou je peut trouver de la doc?
Hart
mercredi 14 mai 2003 à 17:14:17 | Re : verif CRC16

BruNews

Administrateur CodeS-SourceS
Sert a enregistrer une valeur de controle d'integrite, surtout employe dans la compression, decoupage. Partout ou tu veux controler que donnees obtenues sont conformes a donnees originales.
Pour ce faire on parcourt le buffer dans un algo qui te donne un resultat.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> c'est quoi le CRC ? Ou je peut trouver de la doc?
> Hart
jeudi 23 septembre 2004 à 15:27:22 | Re : verif CRC16

pupucelud

Ca ressemble à l'algorithme utilisé pour le calcul du CRC dans les trames Modbus et autres...
Voici le mien (fonctionne parfaitement, validé avec plusieurs automates programmables industriels) :

unsigned short CalcCRC( unsigned char * message, int l )
{
unsigned short crc = 0xFFFF;

for ( ; l--; )
{
crc ^= * ( message++ );
for ( SHORT j = 8; j--; )
{
if ( crc & 1 )
crc = ( crc >> 1 ) ^ 0xA001;
else
crc >>= 1;
}
}
return( crc );
}
lundi 14 décembre 2009 à 23:08:30 | Re : verif CRC16

tligmohamed

chaqu'un a propre methode de calcul de crc
donc je vous dit de faire attention de ne plus perdre votre temps dans des details que vous n'aidez pas
bonne chance
lundi 14 décembre 2009 à 23:54:14 | Re : verif CRC16

uaip

Salut,
Bienvenue sur Codes-Sources. Je t'informe juste que tu es en retard de 6ans (le topic date de 2003)


Cordialement, uaip.


Cette discussion est classée dans : int, data, calcul, crc, crc16


Répondre à ce message

Sujets en rapport avec ce message

implicit declaration of function `int getchar(...)' [ par cognac ] À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include //bibliotheque d'entree vc++ : pb d'ecriture dans fichier taille sup a prévu [ par adidmamah ] g un groooooo pb qui m'épate sincerementj'ecris dans un fichier en utilisant un structure : struct data { char nom[30]; lisez s'il vous plait et aidez moi .... [ par myvess ] salut et merci pour l'aide mais je sais pa si ca resouds mon probleme .en fait le but est de programmer un dictionnaire(allemand-francais).et pour ce Pointeur récalcitrant [ par asmanur ] Bonjour, j'ai des prob avec des pointeurs regardez le codevoid LoadMap(int** Data,char* path){FILE* f=fopen(path,"r+");int Width=getc(f)-50;//Pourquoi Afficher une image avec gtkmm [ par naika585 ] Bijour tt l'monde !Je developpe une interface avec gtkmm.Mon pb est le suivant : je veux afficher une image avec gtkmm, mais sans passer par le nom du Pb de destructeur [ par Stubbornman ] Salut a tous, j'ai un pb de destructeur que je n'arrive pas a resoudre: Mon constructeur: template inline Matrix::Matrix( int row, int column ) en C comment copier un enregistrement dans un tableau de char [ par themahg ] ThemahG, Japon toujours! Aidez moi svp, j'ai un probleme dans mon prog, g n'arrive pas à copier dans un tableau à 2 dimension l'enregistrement d'une Algo de calcul d'un CRC16 [ par cestmat ] Bonjour,Je dois calculer un CRC avec le polynome utilisé dans HDLC (X^16 + X^12 + X^5 + 1).J'ai à peu prés compris le principe des CRC mais à chaque f Erreur de tansmission (octet manquant) [ par makmibad ] Bonjour, je suis en train de développer un client serveur sous C++ et je rencontre des difficultes lors de la mise en oeuvre du serveur, je m'explique probleme comprehension void , int , ... [ par cadet1401 ] voila , je me pose une question pour  sur  les fonctions. voici mon code : /*carré de n nombre au carré entier */ # include int saisie () ;int


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales