Серийный порт - Как выполнить безопасный поиск моего устройства?

StackOverflow https://stackoverflow.com//questions/12676857

Вопрос

im Spution Приложение, которое обменивается (через последовательный порт) с электронным устройством, которое я разработал себя.

Когда запускается мое приложение для ПК - он открывает доступные COM-порты один за другим, и он отправляет некоторую строку («Что вы?» Например).

Мое устройство запрограммировано, чтобы ответить на этот «волшебный вопрос» со своим собственным идентификатором (например: «Я злого устройства для руководящих работников»).

Когда мое программное обеспечение для компьютера получают этот «волшебный ответ», он начинает нормально работать и больше не ищет другие порты.

Конечно, я не использую глупые вопросы в передаче данных, его просто пример.

<Сильный> Вопрос - могу ли я отправить строки, как на всех (не занятых) портах, чтобы обнаружить мое устройство?

Если я могу - как этот «вопрос» должен выглядеть? Есть ли нормализованные стандарты?

Это не первый проект, как это на моем столе, но теперь я разрабатываю решение для маленькой промышленности, и мне нужно уделять больше внимания, что делает мое приложение, потому что могут быть другие устройства, подключенные к COM-портам, и я не знаю, Как они могут реагировать.

Извините, если я сделал некоторые языковые ошибки, английский - мой третий язык.

заранее спасибо за ответы.

Это было полезно?

Решение

Нет, вы бы не хотели этого делать.


Когда вы используете COM Serial Port, вы понятия не имеете, что подключено к порту. Это может быть ничего, ваше устройство, модем, мышь (хотя я считаю, что никто больше не использует это ...) Или все, что вы даже не можете себе представить.

Представьте, что если он подключен к другому компьютеру (вероятно, Linux / роутер), отправка вещей может привести к выполнению «этой команды», создавая таким образом неожиданные эффекты (хотя ваша программа не может заметить). Или, если это некоторое плохо запрограммированное устройство, он может вызвать ошибку в прошивке, что не удается в неисправность устройства и сделать его неисправность.

Короче, в худшем случае вы можете сделать вызывать катастрофическое событие .


Serial (RS232 или UART I предполагает) коммуникации не обладают назначенным протоколом передачи (в отличие от USB, который имеет один) для идентификации устройства, поэтому он не является ошибочным безопасным. Пользователь должен убедиться, что он выбрал правильный порт. Вероятно, это одна из причин, по которым производители оборудования выбирают USB, и одна из причин, по которым USB так популярен даже для компьютерных идиотов.

Другие советы

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

Я отправлю уникальный сложный идентификатор каждые 1-5 секунд с устройства.

Когда запускается мой компьютер - он попытается последовательно открыть все доступные порты и прослушивают этот идентификатор в течение нескольких секунд.

Если приложение получает этот идентификатор - это будет подтверждение, этот номер / имя / имя порта верно, а я мое соединение установлено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top