[LØST] Rask checksum i Python av 12 byte

2 innlegg i emnet

Skrevet (endret)

Dette gjelder egentlig denne:

http://itpro.no/supportforum/index.php?showtopic=82602

Når jeg skal sende noe fra én enhet til én annen så vil det være i 12 byte pakker.

Jeg vil så være sikker på at det jeg har sendt faktisk stemmer, så jeg tenkte å gjøre en checksum av hver mottatt pakke, men jeg trenger noe raskt, noe veldig raskt!

Jeg vil mate den trådløse senderen ved 115200 baud, noe som vil si at hver byte trenger i underkant av 0,09 ms for å sendes. Det er da et teoretisk minimum på 1,08 ms mellom hver pakke blir mottatt.

Problemet mitt ligger i hvordan jeg skal være sikker på at pakkene jeg mottar faktisk er riktige utenom å kun sjekke størrelsen på dem.

Per nå så tror jeg at jeg vil ha 5 ms mellom hver pakke.

Husk at dette er på én RPi!

Jeg prøvde med crc32, md5 og sha256 i python, men tiden de brukte var: 18,4 , 34,3 og 34,8

Jeg trenger altså én veldig enkel og rask metode for dette.

(Det vil være én buffer hos sender på et lite antall av de siste sendte pakkene, slik at jeg kan sende de rette på nytt hvis noe ikke går bra under første forsøk.)

Endret av Deni
0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Jeg har gått gjennom vel 20 metoder for checksum nå, og kommet fram til én jeg kan bruke.

Det endte opp med adler32 fra zlib, som 9,4 for å kjøre når jeg testet den.

Dette er kun 50% av tiden crc32 bruker, og til mitt formål er algoritmen bak adler32 tilstrekkelig.

Jeg tror faktisk jeg kan senke sendetiden til 3-4ms når jeg bruker denne, og kanskje til og med droppe bufferen for å kun sende på nytt pakkene som ikke stemmer én etter én.

Det som også er et pluss, er at adler32 gir meg et 9-10 byte resultat, så det får plass i min pakkestørrelse på 12.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!


Start en konto

Logg inn

Har du allerede en konto? Logg inn her.


Logg inn nå

  • Hvem er aktive   0 medlemmer

    Ingen innloggede medlemmer aktive