Dursun lazım olur:)
uint8_t CheckSumControl(uint8_t dataArray[], uint8_t len, uint8_t chk)
{
uint8_t i;
uint8_t checkSum = 0;
uint8_t result = 0;
uint32_t tmp = 0;
for (i = 0; i < len; i++)
tmp += dataArray[i];
checkSum = (uint8_t)(tmp & 0x000000FF);
checkSum = ~checkSum;
checkSum += 1;
result = (checkSum == chk) ? 1 : 0;
return (result);
}
Data ve uzunluk 8 bit ise toplam 255x255 e kadar gidebiliyor demektir. Tmp değişkenini 8 bit ile sinirlarsak overflow dan dolayı bu checksum fonksiyonunun farklı data dizileri için aynı degeri hesaplama ihtimali yüksektir. 16 bitlik olmasi daha güzel olur.
Hocam haklısınız.
Benim kullandığım yapıda standart 8 bit olduğu için 8 bit yapım.
Uzunluğa göre düzenlenebilir. :)