Я пишу функцию для построения контрольной суммы из заданной строки.
Контрольная сумма определяется как: 2-е дополнение 7 младших разрядов двоичной суммы всех символов в строке, предшествующейконтрольная сумма, включая STX и CR.
Пока что я пришел к выводу:
CheckDigit = getcheckdigit(buffer);
sprintf(buffer,"%c%c%c%s%s%c%c",
2,
iDP,
iStatus,
my_ltoa(s,NetWeight,7,0x00),
my_ltoa(t,TareWeight,6,0x00),
13,
CheckDigit);
int getcheckdigit(char *buffer) {
int checkdigit,i;
int sum;
char *ptr;
for (i=0;i<=16;i++) {
*ptr=buffer[i];
sum = sum + atoi(ptr);
}
sum = sum % 64;
checkdigit = ~sum;
checkdigit = checkdigit + 1;
return checkdigit;
}
Это, кажется, возвращает то же значение, и я не могу понять, почему, поскольку я не могуотладить его.