![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Проги на заказ
Пользователь
Регистрация: 22.05.2007
Сообщений: 41
|
![]()
Пишу программу для передачи данных на железку, нужно рассчитать контрольную сумму передаваемой команды.
Описание алгоритма: The two CRC bytes are calculated according to the formula x^15 + 1. In the calculation are included all data bytes plus the byte for block end. Every byte passes through the calculation register from teh MSB to LSB. Three working bytes are used - S1, S0 and TR S1 - Most significant byte from the CRC ( it is transmitted immediatelly after END) S0 - Least significant byte from the CRC ( It is transmitted after S1) TR - the current transmitted byte in the block. The CRC is calculated as follows: 1. S1 and S0 are zeroed 2. TR is loaded with the current transmitted byte. The byte is transmitted. 3. Points 3.1 and 3.2 are executed 8 times: 3.1. S1, S0 and TR are shifted one bit to the left. 3.2. If the carry bit from S1 is 1, the MSB of S1 and LSB of S0 are inverted. Points 2 and 3 are executed for all bytes, included in the calculation of the CRC - from the first byte after BEG up to and including byte END. 4. TR is loaded with 0 and point 3 is executed 5. TR is loaded with 0 and point 3 is executed 6. Byte S1 is transmitted 7. Byte S0 is transmitted Примеры команд и их контрольные суммы (2 байта) (в ASCII): Команда: R0;1;<CR> Сумма: Н. Команда: R0;2;<CR> Сумма: M- Команда: R0;4;<CR> Сумма: Н* Команда: R0;5;<CR> Сумма: 2Ф где <CR> = 1 байт = #13 Пытался сам написать программу для вычисления CRC, но суммы у меня выходят совершенно другие, прошу помощи экспертов в этом вопросе. Мой не правильно работающий код: Код:
Делфист - это звучит гордо!
|
![]() |
![]() |
![]() |
#2 |
Проги на заказ
Пользователь
Регистрация: 22.05.2007
Сообщений: 41
|
![]()
Нашел рабочий код на php, как бы перевести его на delphi
Код:
Делфист - это звучит гордо!
|
![]() |
![]() |
![]() |
#3 |
Проги на заказ
Пользователь
Регистрация: 22.05.2007
Сообщений: 41
|
![]()
Пришлось всё делать самому =)
Вот рабочий код Код:
Делфист - это звучит гордо!
|
![]() |
![]() |
![]() |
#4 |
Проги на заказ
Пользователь
Регистрация: 22.05.2007
Сообщений: 41
|
![]()
Допиленная версия, на входе строка с командой, на выходе строка с CRC
Код:
Делфист - это звучит гордо!
|
![]() |
![]() |
![]() |
#5 |
Проги на заказ
Пользователь
Регистрация: 22.05.2007
Сообщений: 41
|
![]()
Отличный форум, столько желающих помочь =)
Тему можно закрывать
Делфист - это звучит гордо!
|
![]() |
![]() |
![]() |
#6 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]()
Вот и славно, тогда я свой код убираю
Последний раз редактировалось Black Fregat; 02.01.2018 в 12:56. Причина: Зря возился только.. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Иногда "помощь клуба" заключается в том, что формулируя вопрос, начинаешь "глубже думать" - и додумываешься
![]() ![]() А в Новый год - так в основном не помогать, а пьянствовать водку ![]() Последний раз редактировалось digitalis; 02.01.2018 в 14:37. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
любое описание протокола RTU приборов содержит процедуру расчёта crc16. в как минимум 3 х языках программирования. думать не надо тупо копировать. плюс полином ещё разный можно ставить и начальное значение.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибка при подсчете количества | Pushkin1983 | Microsoft Office Access | 3 | 07.06.2014 08:15 |
Баг в отрисовке и подсчете на Канве | Silwerwing | Помощь студентам | 1 | 23.04.2013 19:04 |
Баг в отрисовке и подсчете на Канве | Silwerwing | Общие вопросы Delphi | 0 | 14.04.2013 12:08 |
Не выводит результат о подсчете строк. | Predator199 | PHP | 2 | 06.08.2012 16:52 |
Ошибка в подсчете | Rik_Igle | Помощь студентам | 4 | 03.12.2011 21:58 |