Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

// *********************************************************************
// Function to calculate the CRC from a protocol buffer with
// the given length
// *********************************************************************
unsigned int build_crc(unsigned char length, unsigned char* protocol)
{
// the initial CRC value
#define CRC_PRESET
// the reverse CRC-CCIT pollynomial
#define CRC_POLYNOM
unsigned char i,k;
unsigned int crc;
unsigned char crc_in;
crc CRC_PRESET;
for(i=0;i< length;i++)
{
crc_in = protocol[i];
for (k=0;k<=7;k++)
{
}
}
return(crc);
}
Die Prüfsumme besteht immer aus 4 Hexzeichen (Wertebereich 0x0000 bis 0x FFFF). Die
vier Hexzeichen werden als vier ASCII-Zeichen im Bereich ‚0' bis ‚9' und ‚A' bis ‚F'
übertragen.
Beispiel:
Die Prüfsumme 0E2A wird übertragen als chr(0x30), chr(0x45), chr(0x32),chr(0x41).

7.4 Telegrammstruktur

1 Byte für Attribut (# = no attribute, 'A' ... 'Z') – übertragen als 1 ASCII-Zeichen
6 Byte für Datum/Uhrzeit in BCD-Format – übertragen als 12 ASCII-Zeichen
1 Byte für Codelänge (1 ... 16) – übertragen als ein ASCII-Zeichen ‚0' .. ‚9', ‚A' .. ‚F' 2
Beispiel:
Länge = 16; Länge – 1 =15; hex Wert = 0xF;
---------------------------------------------------------------40/61--------------------------------------------------------
0x0000
0x8408
// initial value
// loop trough the protocol
// get next protocol byte
// loop trough one byte LSB to MSB
// test each Bit for CRC calculation
if((((crc_in>>k)&0x01)^(crc&0x0001))==1)
{ crc=crc>>1; crc=crc^0x8408; }
else
{ crc=crc>>1;}

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis