Автоматическое определение конфигурации последовательного порта? - PullRequest
3 голосов
/ 03 апреля 2009

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

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

1 Ответ

3 голосов
/ 03 апреля 2009

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

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

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

...