powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / контрольная сумма =подсчет
2 сообщений из 2, страница 1 из 1
контрольная сумма =подсчет
    #35005511
debil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть железяка. В описание указано как считать контрольную сумму.
двоичное дополнение суммы с циклическим переносом (в том числе последним переносом) всех байтов сообщения, кроме байта контрольной суммы

Нашел пример на делфи подсчета контрольной суммы

function GetCtrSum (Data : PByteArray; const Size : WORD) : byte;
function AddOne (Val : word) : word;
begin
while Val > 256 do begin
WordRec (Val).Hi := 0; Val := Val + 1;
end;
result := Val;
end;

var I, R : word; x : byte;
begin
R := 0;
for I := 0 to Size - 1 do R := AddOne (R + Data^ );
x := R xor $FF;
R := AddOne(x + 1);
result := WordRec(R).Lo;
end;

Помогите переделать на С++
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
контрольная сумма =подсчет
    #38360118
ГабитовР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кому пригодится. Двоичное дополнение суммы с циклическим переносом (в том числе последним переносом) всех байтов сообщения, кроме байта контрольной суммы. Применяется как байт контрольной суммы в сетевых сообщениях ПЛК КР-500.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
unsigned int addone(unsigned int val)
{
        while(val>256){
           val=val&0xff;
           val=val+1;
        }
        return val;
}

unsigned char ctrsum(unsigned char *data, unsigned int size)
{
   unsigned int i,r;
   unsigned char x;
   r=0;
   for(i=0;i<size;i++){r=addone(r+data[i]);}
   x=r^0xff;
   r=addone(x+1);
   return (r&0xff);

}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / контрольная сумма =подсчет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]