|
CRC, или как его посчитать :) |
|
|
|
Apr 30 2014, 08:23
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 19-06-13
Пользователь №: 77 216

|
Добрый день. Есть некое устройство, которое общается с внешним миром посредством RS232. Производитель, в качестве примера строки приема/передачи, приводит следующее (прикрепление). Как я понимаю, контрольная сумма здесь символ '%'. Пытаюсь проверить свои догадки, складываю все числа арифметически (за исключением символа '%') , беру 8 бит от суммы: не сходится с догадками  . Произвожу операцию XOR: то же самое. Подскажите пожалуйста, тема CRC для меня новая.
Эскизы прикрепленных изображений
--------------------
Читайте ПУЭ. Сам не читал, но советую :)
|
|
|
|
|
 |
Ответов
|
Apr 30 2014, 08:32
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
суммируйте все числа, и получите ноль либо суммируйте все числа за исключением CRC и должны получить -CRC ( минус CRC ) вот файл
crc.rar ( 1.46 килобайт )
Кол-во скачиваний: 74P.S.: на будующее: хотя бы цифры сами написали, чтобы людям время не тратить на перебивание из PDF В текст
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Apr 30 2014, 08:51
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 19-06-13
Пользователь №: 77 216

|
Цитата(megajohn @ Apr 30 2014, 13:32)  вот файл
crc.rar ( 1.46 килобайт )
Кол-во скачиваний: 74Спасибо, не догадался напечатать... Цитата(megajohn @ Apr 30 2014, 13:32)  суммируйте все числа, и получите ноль либо суммируйте все числа за исключением CRC и должны получить -CRC ( минус CRC ) Вот мне и непонятно как получить 37 (это все таки CRC?)
--------------------
Читайте ПУЭ. Сам не читал, но советую :)
|
|
|
|
|
Apr 30 2014, 09:14
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Alexander2013 @ Apr 30 2014, 12:51)  Вот мне и непонятно как получить 37 (это все таки CRC?) идите простым путем, всё суммируйте и получите 0 если хотите по своему, то так: суммируете чиста кроме CRC - получаете 1499 а так как это байт то будет 219 ( 219беззнаковое это -37 знаковое ) из нуля вычитаете это число 219 и получаете искомый CRC = 37
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Apr 30 2014, 09:27
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 19-06-13
Пользователь №: 77 216

|
Спасибо Цитата(megajohn @ Apr 30 2014, 14:14)  если хотите по своему.... А по-другому ИМХО и не получится: мне нужно слать команды этому устройству, оно проверяет CRC, следовательно, я должен его где-то взять... так? Цитата(megajohn @ Apr 30 2014, 14:14)  суммируете чиста кроме CRC - получаете 1499 а так как это байт то будет 219 ( 219беззнаковое это -37 знаковое ) из нуля вычитаете это число 219 и получаете искомый CRC = 37 Как будет выглядеть целиком алгоритм? На пальцах, если можно....
--------------------
Читайте ПУЭ. Сам не читал, но советую :)
|
|
|
|
|
Apr 30 2014, 09:44
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Alexander2013 @ Apr 30 2014, 13:27)  Как будет выглядеть целиком алгоритм? На пальцах, если можно.... эх, молодежь-молодежь сформировали свой пакет, где в значении CRC = 0 потом заводите переменную unsigned char summ = 0; и начинаете: summ = summ - 36; summ = summ - 67; ... summ = summ - 13; summ = summ - 10; и потом получившийся summ запишите в поле CRC
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Apr 30 2014, 09:57
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 19-06-13
Пользователь №: 77 216

|
Цитата(megajohn @ Apr 30 2014, 14:44)  сформировали свой пакет, где в значении CRC = 0.... С вычитанием понятно, спасибо. Сразу возникает вопрос, откуда тогда берется "сложение", в верхней строчке производитель так и пишет:"added up"?
--------------------
Читайте ПУЭ. Сам не читал, но советую :)
|
|
|
|
|
Apr 30 2014, 10:05
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Alexander2013 @ Apr 30 2014, 13:57)  Сразу возникает вопрос, откуда тогда берется "сложение", в верхней строчке производитель так и пишет:"added up"? есть два идентичных пути: arr[ CRC_index ] = (0 - arr[0] - arr[1] ... - arr[N-1] - arr[N] ); или arr[ CRC_index ] = -(arr[0] + arr[1] ... + arr[N-1] + arr[N] ); если и это не понятно, то back to school
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
Сообщений в этой теме
Alexander2013 CRC Apr 30 2014, 08:23       Alexander2013 Цитата(megajohn @ Apr 30 2014, 15:05) ест... Apr 30 2014, 14:50        adnega Цитата(Alexander2013 @ Apr 30 2014, 18:50... Apr 30 2014, 15:26        Сергей Борщ Цитата(Alexander2013 @ Apr 30 2014, 17:50... Apr 30 2014, 21:17         Alexander2013 Цитата(Сергей Борщ @ May 1 2014, 02:17) В... May 1 2014, 04:05 thodnev Можете воспользоваться одним из онлайновых CRC-кал... May 8 2014, 16:41 Alexander2013 Это был не CRC...
Читать-то букварь я начал по C... May 16 2014, 03:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|