Prüfsumme

<< Click to Display Table of Contents >>

Navigation:  Geräte > UDP Datenaustausch > Protokoll >

Prüfsumme

Previous pageReturn to chapter overviewNext page

Ist die Nachricht kürzer als 100 Byte, so wird aus den einzelnen Bytes des gesamten Paketes die Byte-Summe s0 gebildet. Ist die Nachricht 100 Byte lang oder mehr, so berechnet sich s0 aus den ersten und den letzten 50 Byte der Nachricht.

 

In beiden Fällen muss das Byte für die Prüfsumme mit 0 initialisiert sein. Die Prüfsumme berechnet sich zu

 

Prüfsumme = 0xff - s0

 

unsigned char checksum( const unsigned char* Nutzdaten, unsigned int NutzdatenLänge ) const

{

 unsigned char s0 = 0;

 

 if( NutzdatenLänge < 100 )

 {

         for( int i = 0; i < NutzdatenLänge; ++i )

         {

                 s0 += Nutzdaten[i];

         }

 }

 else

 {

         for( int i = 0; i < 50; ++i )

         {

                 s0 += Nutzdaten[i];

         }

         for( int i = NutzdatenLänge-1; i >= NutzdatenLänge - 50; --i )

         {

                 s0 += Nutzdaten[i];

         }

 }

 

 return ( 0xFF - s0 );

}

 

Um zu überprüfen, ob das Paket korrekt übertragen wurde, werden für Nachrichten kürzer als 100 Byte die einzelnen Bytes des gesamten Paketes zur Byte-Summe s1 aufsummiert. Ist die Nachricht 100 Byte lang oder mehr, so berechnet sich s1 aus den ersten und den letzten 50 Byte der Nachricht.

 

Das Paket ist korrekt, wenn gilt

 

s1 = 0xFF