Bonjour,
j'ai un code qui permet d'envoyer et recevoir des données entre l'ordinateur et une carte électronique. Il faut que j'y ajoute un CRC. J'ai donc parcouru ce tutoriel et fouillé un peu sur le net pour éclaircir au mieux les choses.... Mais c'est pas très clair dans ma petite tête....
Le principe, je pense l'avoir saisi. On divise la trame par un polynôme fixé et le reste de la division nous donne le CRC (le quotient, je le jette?).
Pour ne pas me prendre la tête, je me suis dit que j'allais utiliser le CRC16 CCITT vu qu'il a l'air d'être pas mal utilisé et que 16 bits sont largement suffisant dans mon cas.
Le polynôme est donc: x^16 + x^12 + x^5 + 1
Et en hexa, ça donnerait (toujours d'après le tuto): 0x1021
-> Je n'arrive pas à passer d'une valeur à l'autre...
J'ai passé 1021 en binaire et je pensais qu'il suffisait de tenir compte du poids des bits... Au mieux, je trouve x^12 + x^5 + 1
J'ai l'impression de rater un truc évident, surtout que je suis sûr d'avoir déjà fait ce genre de chose!
Avant de me lancer dans le code, je tiens à bien comprendre le fonctionnement. Je n'ai pas envie de copier/coller et bidouiller des lignes pour l'adapter à mon programme.
Si quelqu'un peut m'expliquer à sa manière le fonctionnement du CRC, je suis tout ouïe!!
(et toutes mes excuses si je ne poste pas dans le bon forum, je ne savais pas où poster mais vu que je code en C++....)
Partager