Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

CRC32 w BASCOMIE. Jak zrobić kontrolę błędów?

05 Lut 2005 11:46 1164 2
  • Poziom 11  
    witam
    potrzebuję dorobić kontrolę błędów crc 32-bitową do obsługi (zapis/odczyt) kości pcf8582 (i2c) na atmedze 16. czy ktoś z użytkowników ma pomysł jak to zrobić, albo jeszcze lepiej - kawałek kodu , oczywiście w bascomie.
    ps. jak będzie w C to też dobrze - jakoś sobie to przerobię
    pozdrawiam, Rafał
  • Poziom 18  
    Witam.W swoich archiwach znalazlem cos takiego :

    /* Definicje wielomian˘w generacyjnych dla CRC 32 bit. */
    #define crc_32 0x04c11db7lu /* ( ETHERNET ) */
    #define CRC_32 crc_32 /* Aktualnie uľywane generatory */

    unsigned long licz_crc32(unsigned char *blok,
    unsigned dlugosc)
    {
    register unsigned long a=0;
    register unsigned char b, j;
    register unsigned i=0;
    while(i<dlugosc)
    {
    b=blok[i];
    for(j=8;j--;)
    {
    if((a & 0x80lu<24)>0 ^^ (b & 0x80)>0)
    {
    a<=1;
    b<=1;
    a^^= crc_32;
    }
    else
    {
    a<=1;
    b<=1;
    }
    }
    i++;
    }
    return a;
    }

    Pozdr.
  • Poziom 28  
    W Bascom'ie masz gotową funkcję do obliczania sumy kontrolnej:

    Suma=CRC32(source , L)

    Code:
    Dim Ar(8) As Byte , X As Long
    

    'init array
    Ar(1) = &H2
    Ar(2) = &H1C
    Ar(3) = &HB8
    Ar(4) = 1
    Ar(5) = 0
    Ar(6) = 0
    Ar(7) = 0

    'get crc32 of array. Scan 7 bytes
    X = Crc32(ar(1) , 7)