Génial merci Arnaud, T'imagine pas le temps que j'ai passé là dessus, je ne comprend pas comment je suis passé à côté.
Si on se croise un de ces quartes n’hésite pas a me rappeler que je te dois au minimum une bière! Salutations Frédéric Le 15 octobre 2011 17:22, Arnaud <[email protected]> a écrit : > Le 14. 10. 11 21:45, Frédéric Benninger a écrit : >> Bonjour, >> >> Je me prend la tête sur le calcul d'un CRC en Perl. >> >> J' écris un script permettant de dialoguer avec une station météo >> utilisant le protocole UMB. >> >> Le protocole utilise une somme de contrôle sur 16 bits pour valider >> les trames. La doc dit que c'est un CRC-CCITT et donne un exemple >> en C. >> >> En Perl avec le script suivent j'obtiens 0xf134 et ce n'est pas un >> résultat valide pour la station météo. :-( >> >> #!/usr/bin/perl -w use strict; use Digest::CRC qw(crcccitt); >> >> my $ctx = Digest::CRC->new(type=>"crcccitt"); >> >> $ctx->add('01234567'); >> >> print $ctx->hexdigest . "\n"; >> >> Par contre l'exemple en C ci-dessous retourne : 0xf843 ce qui >> devrait en théorie être valide car c'est dans la doc officielle du >> protocole UMB. >> >> Pouvez-vous me mettre sur une piste pour comprendre ce qui cloche? > > Hello, > > Je connais pas trop Perl, mais j'ai fait un test rapide, alors > peut-être comme ça ? (j'ai initialisé à 0xFFFF, et mis un CRC polynom > de 1021h). > > Mais bon, ce calculateur online retourne aussi: 0xF134, mais il a un > CRC polynom de 1021 > > ------ > #!/usr/bin/perl -w > use strict; > use Digest::CRC qw(crcccitt crc); > > my $ctx = Digest::CRC->new(type=>"crcccitt"); > $ctx = Digest::CRC->new(width=>16, init=>0xFFFF, xorout=>0x0000, > poly=>0x1021, refin=>1, refout=>1, cont=>1); > > $ctx->add("01234567"); > > print $ctx->hexdigest . "\n"; > ------ > (ça donne le même résultat, et si je mets 123456789 dans le code c, le > perl me retourne dans les 2: 0x6F91) > > Désolé si je suis à côté. _______________________________________________ gull mailing list [email protected] http://forum.linux-gull.ch/mailman/listinfo/gull
