Автоматическое определение конфигурации последовательного порта?

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

Устройство может иметь ряд возможных конфигураций (например, скорость передачи, биты данных, биты четности, стоповые биты), которые должны быть обнаружены во время выполнения. Какой самый простой и надежный способ определить, какую конфигурацию программа использует? Опять же, у меня есть полный контроль над протоколом связи, поэтому я могу определить любой механизм, который захочу.


person Gili    schedule 03.04.2009    source источник


Ответы (1)


Это полнодуплексное или полудуплексное устройство? Можете ли вы управлять запросами на отправку и контролировать разрешение на отправку на обоих концах последовательной линии? Является ли последовательная линия двухточечной (например, RS-232) или многоточечной (например, RS-485)? Это будет иметь (хотя и небольшую) разницу, если вы собираетесь мешать другим уже подключенным устройствам во время переговоров с вновь подключенным.

Если вы думаете о процессе рукопожатия как о модеме, согласовывающем протокол канального уровня, он использует стандартный набор сообщений для описания типа связи, который он хотел бы иметь, и ожидает подтверждения от другого конца. В вашем случае я рекомендую иметь стандартное сообщение «давайте поговорим», которое ваш головной узел генерирует с диапазоном скоростей передачи данных и ожидает подтверждения от устройства.

Также рекомендую сократить количество вариантов конфигурации устройства. Забудьте о битах переменных данных, битах четности и стоповых битах. Мир последовательной связи уже не такой нестабильный, как в 70-е годы. Просто используйте 8 бит данных, без контроля четности, один стоповый бит и меняйте скорость передачи данных. CRC в конце сообщений обеспечивает множество проверок ошибок.

person Joel    schedule 03.04.2009
comment
Сейчас я смотрю на полнодуплексный RS-232, но RS-485 выглядит интересно. Какая разница между дуплексным и управляющим запросом / разрешением на отправку на обоих концах? Могу ли я начать обмен данными с использованием требуемой конфигурации и мгновенно переключиться на предпочтительную конфигурацию без отключения? - person Gili; 03.04.2009
comment
Полный дуплекс - это одновременная отправка и получение блоков данных протокола (сообщений). RTS / CTS - это простые способы передачи сигналов начала / продолжения обмена сообщениями, например однобитового сообщения. Вы можете начать медленно и постепенно увеличивать количество ошибок до того, как частота ошибок станет слишком высокой. - person Joel; 04.04.2009