2009-04-03 4 views
3

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

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

ответ

3

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

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

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

+0

Сейчас я смотрю полнодуплексный RS-232, но RS-485 выглядит интересно. Какая разница, делает ли дуплекс и контрольный запрос/clear-to-send на обоих концах? Могу ли я начать связь с использованием необходимой конфигурации и перейти на предпочтительную конфигурацию «на лету» без отключения? – Gili

+0

Полный дуплекс - это одновременная отправка и прием протокольных блоков данных (сообщений). RTS/CTS - это простые способы сигнализации сигналов начала/продолжения обмена сообщениями, например, один бит. Вы можете абсолютно начать медленно и наращивать до того, что ссылка может обрабатывать, прежде чем уровень ошибок станет слишком высоким. – Joel

Смежные вопросы