Bonjour
je travaille actuellement sur mon projet pour mon bts, ayant terminé mon travail je voudrais ajouter en bonus un générateur de CRC 16, je travaille sur des trames ModBus, en liaison RS485.
j'ai utilisé l'algorithme de notre prof, mais je ne retrouve pas les résultats attendus
voici le codeje travaille sur Embarcadero 2010.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 int i=0; int j=0; //---------- Calcul du CRC16 Modbus --------------- // gérer "octet" sur 16 bits pour calcul de CRC sur 16 bits char trame[12]=""; strcpy(trame,EdRequete->Text.t_str()); short int octet=trame[i]; octet=octet&0x00FF; short int polynome=0xA001; int nombreOctets=8; char resultatCRC[10]=""; short int CRC; do { CRC=CRC^octet; for(j=0;j<8;j++) { short int parite=CRC & 0x0001; CRC=CRC/2; if (parite==1) { CRC=CRC^polynome; } } i++; octet=trame[i]; octet=octet&0x00FF; nombreOctets=nombreOctets-1; } while (nombreOctets>0); sprintf(resultatCRC,"0x%hX",CRC); Edit1->Text=resultatCRC;
Je travaille dessus depuis plusieurs jours, il s'agît peut être d'une erreur toute bête et simple mais je ne vois pas.
Pouvez vous m'aider svp ?
Merci
Partager