Добрый день всем. Возникла необходимость разобраться с протоколом управления датчиком расстояния из китая.
Ссылка на датчик на aliexpress :
https://ru.aliexpress.com/item/Fast-Fre ... 7f47&tpp=1
К данному датчику продавец сбросил документ с командами ( прикрепил к сообщению файл .doc)
Так как опыта мало возник следующий вопрос:
Что за байт в данном протоколе "CS?
Например команда "single measurement(1mm) " вызывается отправкой сдедующего набора байт "ADDR 06 02 CS". Если что такое "ADDR" это понятно (по умолчанию этот байт равен "80"), то что такое CS пока не могу понять. Подскажите пожалуйста.
Протокол управления датчика расстояния
Протокол управления датчика расстояния
- Вложения
-
- communication protocol.doc
- Протокол управления от продавца
- (65.54 КБ) 240 скачиваний
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Протокол управления датчика расстояния
Контрольная сумма. Младший байт суммы всех байт в строке должен быть равен 00h. Как в hex-формате.
Из вики:
Из вики:
Последний байт в записи является контрольной суммой. Рассчитывается так чтобы сумма всех байтов в записи была равна 0.
Docendo discimus
Re: Протокол управления датчика расстояния
pyzhman, спасибо огромное
Действительно так, сходится с примерами:
Single measure:80 06 02 78 -- 0x80+0x06+0x02=0x88 -> 0x00-0x88=0x78 (по модулю) что совпадает с последний байтом исходной команды
Set the measure range 5m: FA 04 09 05 F4 -- 0xFA+0x04+0x09+0x05=0x10C -> Последний байт получается 0x0С -> 0x00-0x0С=0xF4 (по модулю), снова совпадает
Пример полученного значения: 80 06 83 30 30 33 2E 35 34 34 99
0x80+0x06+0x83+0x30+0x30+0x33+0x2E+0x35+0x34+0x34=0x267 -> Последний байт получается 0x67 > 0x00-0x67=0x99, и снова совпадает
Действительно так, сходится с примерами:
Single measure:80 06 02 78 -- 0x80+0x06+0x02=0x88 -> 0x00-0x88=0x78 (по модулю) что совпадает с последний байтом исходной команды
Set the measure range 5m: FA 04 09 05 F4 -- 0xFA+0x04+0x09+0x05=0x10C -> Последний байт получается 0x0С -> 0x00-0x0С=0xF4 (по модулю), снова совпадает
Пример полученного значения: 80 06 83 30 30 33 2E 35 34 34 99
0x80+0x06+0x83+0x30+0x30+0x33+0x2E+0x35+0x34+0x34=0x267 -> Последний байт получается 0x67 > 0x00-0x67=0x99, и снова совпадает
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Протокол управления датчика расстояния
Я даже больше скажу. В переводе на английский контрольная сумма это CheckSum. Улавливаете? Те самые CS. Попадает, однако.
Docendo discimus
Re: Протокол управления датчика расстояния
Я как бы и подозревал что это расшифровывается CheckSum (тем более расположена на конце команд), но так как в описании нигде не было функции как рассчитывать СS, то сомневался немного. Были мысли что это возвращаемый параметр константа при опросе (constant тоже немного с CS похоже чем-то). Но про расчёт контрольной суммы всё равно не понимал, а теперь разобрался, так что спасибо ещё раз.
- Реклама


