W
8.A.3
Berechnung der Checksumme
Beispiel-Code:
// example receive buffer filled with data from communication example 1:
char receiveBuffer[] = {
0x00 0x0d 0x01 0x02 0x90 0x01 0x00 0x31 0x72 0x00 0x00 0x00 0x00 0x00 0x00 0xbb
// this function creates the checksum
unsigned char
CheckSumm (
{
unsigned char
Summ
=
int
i;
int
length
=
receiveBuffer[ ];
int
lastIndex
=
length
+
2
for
( i
=
1
; i lastIndex ; i
<
++
{
Summ
+=
receiveBuffer[i];
}
return
(
0xff
-
Summ);
}
// this function compares calculated checksum with received checksum from receive buffer
bool
CompareCheckSumm(
{
int
length
=
receiveBuffer[ ];
int
checksummoffset
=
length
if
( receiveBuffer[checksummoffset]
return
true
;
else
return
false
;
}
Antriebssystem SD2 - DNC 8 Byte Telegramm
,
,
,
,
,
,
char
* receiveBuffer)
0
;
// start value for the checksum
// loop counter
1
// amount of bytes to create checksum
;
// last valid index for checksum loop
)
// loop run from "length" byte to last "data" byte
// add new value to last result
void
)
1
// length of checksum data
+
2
;
// index in the array where the checksum is saved
==
CheckSumm( receiveBuffer[ ] ) )
// compare received checksum with calculated checksum
,
,
,
,
,
&
0
Anhang
,
,
,
,
};
35
8.A