powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CRC-16 CCITT
10 сообщений из 10, страница 1 из 1
CRC-16 CCITT
    #32464988
Esa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Esa
Гость
Дело в следующем.
Нужно посчитать контрольную сумму посылки используя алгоритм CRC-CCITT. Полином:
P(X)=X^16+X^12+X^5+1. Вот.

Нет ли у кого готовой процедурки для подсчета? Заранее спасибо :)
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #32465198
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что? возьми и забей эту функцию в прогу, или я что-то не понимаю?
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #32465211
Esa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Esa
Гость
Вот что мне нравится в некоторых людях, так это умение давать полезные и конструктивные ответы
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #32465268
Фотография Jozo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.torry.net

тебе поможет
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #32465488
Esa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Esa
Гость
2Jozo
большое спасибо, я нашел :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
CRC-16 CCITT
    #39665702
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подыму тему.
Может какой добрый человек разжует мне чайнику.

Пытаюсь на Lazarus+Synapse написать драйвер для фискального регистратора.
В доке написано как считать контрольную сумму и даже есть функция для расчета.
Вот только не могу понять как ее использовать.
Написано:
Контрольная сумма CRC16 использует CCITT 2 -полином (х 16 + х 12 + х 5 + 1) и расчитывается
по полям Номер, Код, Параметры, CS и ETX без дублирующих и заключительного DLE.
Пример функции:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function CalcCRC16(DataByte: Byte; CRC16: word): word;
var
a:word;
begin
CRC16 := CRC16 xor DataByte;
a:=(CRC16 xor (CRC16 shl 4)) and $00FF;
Result:=(CRC16 shr 8) xor (a shl 8) xor (a shl 3) xor (a shr 4);
end;


Не понимаю насчет входящих параметров и что должно быть в результате.
На входе
1. DataByte: Byte - какой байт туда пихать?
2. CRC16: word - word - целое число а написано: "расчитывается по полям Номер, Код, Параметры, CS и ETX"

Понимаю что не хватает теории но не хватает времени грызть это все самому.
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #39665707
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MironicoПодыму тему.
Может какой добрый человек разжует мне чайнику.

Пытаюсь на Lazarus+Synapse написать драйвер для фискального регистратора.
В доке написано как считать контрольную сумму и даже есть функция для расчета.
Вот только не могу понять как ее использовать.
Написано:
Контрольная сумма CRC16 использует CCITT 2 -полином (х 16 + х 12 + х 5 + 1) и расчитывается
по полям Номер, Код, Параметры, CS и ETX без дублирующих и заключительного DLE.
Пример функции:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function CalcCRC16(DataByte: Byte; CRC16: word): word;
var
a:word;
begin
CRC16 := CRC16 xor DataByte;
a:=(CRC16 xor (CRC16 shl 4)) and $00FF;
Result:=(CRC16 shr 8) xor (a shl 8) xor (a shl 3) xor (a shr 4);
end;



Не понимаю насчет входящих параметров и что должно быть в результате.
На входе
1. DataByte: Byte - какой байт туда пихать?
2. CRC16: word - word - целое число а написано: "расчитывается по полям Номер, Код, Параметры, CS и ETX"

Понимаю что не хватает теории но не хватает времени грызть это все самому.

ну вот все параметры побайтно засовываешь в функцию
как-то так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
  Crc16 : Word ;
begin
  Crc16 := 0 ;

  Crc16 := CalcCRC16(байт1, Crc16) ;
  Crc16 := CalcCRC16(байт2, Crc16) ;
  Crc16 := CalcCRC16(байт3, Crc16) ;
  { и так далее }
end ;
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #39665710
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, начинаю понимать.
Получается последнее значение и есть контрольная сумма?
А начальное всегда 0?
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #39665714
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MironicoАга, начинаю понимать.
Получается последнее значение и есть контрольная сумма?
А начальное всегда 0?

а почему бы и нет ?
...
Рейтинг: 0 / 0
CRC-16 CCITT
    #39665781
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CRC-16 CCITT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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