Перейти к содержанию
    

Добрый день.

Есть некое устройство, которое общается с внешним миром посредством RS232. Производитель, в качестве примера строки приема/передачи, приводит следующее (прикрепление).

Как я понимаю, контрольная сумма здесь символ '%'. Пытаюсь проверить свои догадки, складываю все числа арифметически (за исключением символа '%') , беру 8 бит от суммы: не сходится с догадками :). Произвожу операцию XOR: то же самое.

Подскажите пожалуйста, тема CRC для меня новая.

post-77216-1398846217_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

суммируйте все числа, и получите ноль

либо суммируйте все числа за исключением CRC и должны получить -CRC ( минус CRC )

 

вот файл crc.rar

 

P.S.: на будующее: хотя бы цифры сами написали, чтобы людям время не тратить на перебивание из PDF В текст

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот файл crc.rar

Спасибо, не догадался напечатать...

 

суммируйте все числа, и получите ноль

либо суммируйте все числа за исключением CRC и должны получить -CRC ( минус CRC )

Вот мне и непонятно как получить 37 (это все таки CRC?)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мне и непонятно как получить 37 (это все таки CRC?)

 

идите простым путем, всё суммируйте и получите 0

 

если хотите по своему, то так:

суммируете чиста кроме CRC - получаете 1499

а так как это байт то будет 219 ( 219беззнаковое это -37 знаковое )

 

из нуля вычитаете это число 219 и получаете искомый CRC = 37

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо

если хотите по своему....

А по-другому ИМХО и не получится: мне нужно слать команды этому устройству, оно проверяет CRC,

следовательно, я должен его где-то взять... так?

 

суммируете чиста кроме CRC - получаете 1499

а так как это байт то будет 219 ( 219беззнаковое это -37 знаковое )

из нуля вычитаете это число 219 и получаете искомый CRC = 37

Как будет выглядеть целиком алгоритм? На пальцах, если можно....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как будет выглядеть целиком алгоритм? На пальцах, если можно....

 

эх, молодежь-молодежь

 

сформировали свой пакет, где в значении CRC = 0

потом заводите переменную unsigned char summ = 0;

и начинаете:

summ = summ - 36;

summ = summ - 67;

...

summ = summ - 13;

summ = summ - 10;

 

и потом получившийся summ запишите в поле CRC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сформировали свой пакет, где в значении CRC = 0....

 

С вычитанием понятно, спасибо. Сразу возникает вопрос, откуда тогда берется "сложение", в верхней строчке производитель так и пишет:"added up"?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сразу возникает вопрос, откуда тогда берется "сложение", в верхней строчке производитель так и пишет:"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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть два идентичных пути:

....

 

т.е. это два СТАНДАРТНЫХ, ОБЩЕПРИНЯТЫХ алгоритма?

если так, то все понятно, какие могут быть вопросы касательно этого....

или "сложение" - это вещь условная?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. это два СТАНДАРТНЫХ, ОБЩЕПРИНЯТЫХ алгоритма?

если так, то все понятно, какие могут быть вопросы касательно этого....

или "сложение" - это вещь условная?

Ага. Только называется это не CRC, а CS (контрольная сумма). У CRC совершенно определенные свойства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. это два СТАНДАРТНЫХ, ОБЩЕПРИНЯТЫХ алгоритма?
Вообще-то это арифметика, первый класс. Тема "Сложение и вычитание". И четвертый класс, тема "отрицательные числа". a+b = a - ( -b )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то это арифметика, первый класс...

Я не спрашивал как сделать 2+2, я спрашивал касательно алгоритма, и математика здесь не при чем.

Считать умею, благодарю.

 

megajohn еще раз спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так же, как и писать по-русски?

Да уж не менее грамотно, чем большинство пользователей данного (да и большей части) форумов.

 

По существу вопроса я ответ получил, спасибо людям. Приятно когда человек может просто ответить на вопрос, а не начинать разговор в ключе "вы не так делаете, и не так говорите".

Не нужно ко мне придираться, лично Вам я ничего плохого не сделал. Флудить больше не хочу.

 

Еще раз спасибо.

Изменено пользователем Alexander2013

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете воспользоваться одним из онлайновых CRC-калькуляторов.

Если хотите сами написать функцию расчета CRC, то лучше использовать готовую.

Кстати, контрольная сумма зависит также от выбранного полинома

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это был не CRC... :biggrin:

Читать-то букварь я начал по CRC, спутал эту тему со своей задачей, у меня ведь действительно ПРОСТО сумма...

Поэтому и начал спрашивать про "алгоритмы". Теперь дошло, затупил, пардоньте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...