|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.06.2023, 15:29 | #1 |
Пользователь
Регистрация: 17.04.2010
Сообщений: 29
|
назад в прошлое , вопрос по CRC кодам
когда то в каких то приборах использовал подсчет CRC, для связи по модбасу rtu
точно знаю такую комбинацию дивайс понимает 7 10 0 8 0 1 2 0 2 0D 79 0D 79 это CRC должно 16 подставляю в прежнюю формулу подсчета 0D 79 никак не получается .... пытался в калькуляторы онлайн вставлять тоже не могу получить ожидаемое |
27.06.2023, 15:41 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Первая ссылка в гугле https://www.lammertbies.nl/comm/info/crc-calculation
вставляете 071000080001020002 тыкаете hex и Calculate CRC -> CRC-16 (Modbus) 0x790D |
27.06.2023, 15:45 | #3 |
Пользователь
Регистрация: 17.04.2010
Сообщений: 29
|
спасибо что напомнили , похоже я ранее подсчет проводил CRC -16 не модбас , как сложно переделать такое ? алгоритм насколько сложнее ?
|
27.06.2023, 16:05 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Что переделать? Там алгоритма то:
Код:
|
27.06.2023, 16:16 | #5 |
Пользователь
Регистрация: 17.04.2010
Сообщений: 29
|
function crc16(Buffer: string; Polynom, Initial: Cardinal): Cardinal;
var i, j: Integer; begin Result := Initial; for i := 1 to Length(Buffer) do begin // f1.sb2.Tag:= f1.sb2.Tag+1; //256 Result := Result xor (ord(buffer[i]) shl 8); for j := 0 to 7 do begin // f1.tag:=f1.tag+1; if (Result and $8000) <> 0 then Result := (Result shl 1) xor Polynom else Result := Result shl 1; end; end; Result:=Result and $ffff; end; function GenerateTableCrc16(Poly: Cardinal): Cardinal; var i: Cardinal; begin for i:=0 to 255 do begin CRC16Table[i] := Crc16(chr(i),Poly,0); // ..256 end; end; GenerateTableCrc16($8F57); e12.text:=inttohex(crc16byte(s,0),4 ); ТУТ Я ПОЛУЧАЛ crc мне конечно помогли- тот дивайс работал Последний раз редактировалось aha; 27.06.2023 в 16:21. |
28.06.2023, 15:51 | #6 |
Пользователь
Регистрация: 17.04.2010
Сообщений: 29
|
разобрался с кодом, теперь не могу прочитать полученные 3 байта с прибора
00 41 40 это точно 12 00 41 50 -- 13 . . 00 41 А0 -- 20 00 43 00 -- 128 не хотелось бы составлять таблицу перевода ... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вспомним прошлое!!!! | SG13 | Свободное общение | 52 | 20.11.2011 17:21 |
Вопрос по RGB-кодам цветов, оттенки и различия. | Vova777 | Общие вопросы Delphi | 3 | 06.10.2011 20:13 |
Вопрос по кодам Хаффмана | BaSoff | Общие вопросы C/C++ | 5 | 29.03.2010 00:42 |
Назад в прошлое | Repz | О форуме и сайтах клуба | 4 | 14.08.2007 12:56 |