Цитата Сообщение от Eznamos Посмотреть сообщение
Дело не в таймаутах или скорости обмена и т.п. Это происходит только при нулевом байте в CRC.
Я даже могу предположить, а при наличии исходников прошивки, на любом языке, указать точное место, где ошибся программист прошивки.
Всё дело в работе со строками в языках программирования. Библиотечные функции по работе со строками считают "\0" концом строки.
Скорее всего, что "ошибка" происходит в одной из библиотечных функций (по сути это и не ошибка) просто особенность её работы, о которой не подумал программист.
Сам такой. Написал реализацию нескольких протоколов для разных устройств и по "таким" граблям тоже ходил.
Расстраивает, что ТП не реагирует, когда так подробно им пишешь, тратя свое время ((.
а с чего Вы решили что работа со строками должна быть, по сути там просто к пришедшему набору байт добавляется в начало служебная информация из шести байт и отбрасывается контрольная сумма, зачем там строки?
Формат ответа ТСР правильный, хоть и не верный и не ожидаемый, скорее всего он напоминает ответ ошибки, если вместо 02 будет стоять 82. То что там последние нули не обрабатываются, так это на стадии расчета контрольной суммы для проверки выяснилось бы, тут просто надо знать как выглядит ответ с ошибкой CRC, это могут сделать обладатели МКОН-а. Ну и второй момент это есть ли проверка CRC или шлюз сразу отправляет транзитом данные, тогда в этой функции не верно рассчитывается объем данных всего пакета, возможно из-за наличия нуля в последнем байте