samedi 24 août 2013

CRC32

Je m'arrache les cheveux depuis ce matin car les ordres que j'envoie depuis le PC ne sont pas tout à fait pris en compte par arduino. Même à 9600 bauds, j'ai des pertes assez fréquentes.
Par exemple si j'envoie 0.18, je vais parfois recevoir 0. ou 0.8 voire 1 ce qui est un peu embêtant.

J'ai donc chercher à rajouter un checksum.
Le checksum a l'avantage de ne pas modifier le message qui reste lisible.
Je n'ai pas trouvé de solution toute faite, mais j'ai trouvé le code CRC32 (Contrôle de Redondance Cyclique).
http://excamera.com/sphinx/article-crc.html
L'exemple donné ne marche plus mais la correction est donnée ici dans un post de mai 2013.

J'ai eu quelques difficultés à faire une implémentation qui marche...
Mais voici le résultat.

Reste à voir si cela permet d'augmenter le débit (sachant que les erreurs ne sont que rejetées pas corrigées).

Aucun commentaire:

Enregistrer un commentaire