Как определить имя последовательного порта, подключенного к другой машине с помощью .NET? - PullRequest
0 голосов
/ 09 апреля 2010

Мне нужно определить имя последовательного порта, подключенного к другой машине, используя c #.

Ответы [ 3 ]

3 голосов
/ 09 апреля 2010

Это просто не то, как работают последовательные порты. Это не шина, такая как USB или PCI, где вы можете подключить что-то, а операционная система сделает ах-ха, новое оборудование! открытие автоматически. Последовательные порты очень примитивны, начиная с каменного века компьютерного оборудования.

Требуется человек, чтобы подключить разъем устройства последовательного порта. Если повезет, на разъеме будет наклейка, в которой указано, какой номер COM-порта назначен этому разъему Хотя эта удача трудно прийти в эти дни. Затем она скажет программе установить соединение с этим конкретным COM-портом. Гипертерминал - это каноническая реализация такой программы в Windows.

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

Итак, предоставьте вашей программе пользовательский интерфейс, который позволяет пользователю выбирать COM-порт (ы). Сохраните выбор в данных конфигурации, вероятно, * вероятно, что устройство все еще подключено к тому же порту при запуске резервного копирования. Вы можете использовать WMI и класс Win32_SerialPort, чтобы предоставить лучшее описание для COM-порта (больше, чем просто число). Некоторые эмуляторы последовательного порта USB могут устанавливать для свойства Description нечто распознаваемое.

SerialPort.GetPortNames () перечисляет доступные номера COM-портов. Базовым тестом работоспособности является проверка свойства SerialPort.DsrHolding, оно должно быть истинным, когда устройство последовательного порта подключено и включено.

1 голос
/ 09 апреля 2010

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

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

Представьте, что к вашему ПК подключен старый добрый последовательный модем. Чтобы выяснить это, вам нужно открыть все доступные порты и отправить «AT» по проводам. Если возвращается «OK», вы нашли модем (может быть, необходимы дополнительные задачи, чтобы проверить, нашел ли вы нужный [возможно, к вашему компьютеру подключено более одного устройства]).

Что я только что пропустил: не забудьте настроить последовательный порт! Не устанавливайте только скорость передачи и стоп-биты. Установите все настройки на нужные вам значения (даже если вы используете настройки по умолчанию). Потому что эти настройки также будут сохранены, если вы закроете и снова откроете. Все настройки остаются в силе, если вы не измените их. Теперь представьте, что у вас есть другое приложение на вашем компьютере, которое также открывает последовательный порт и изменяет настройки для некоторых необычных функций (например, XOnOff). Если вы не установите его обратно на этапе инициализации Вы никогда не сможете получить рабочее соединение!

Обновление

Прослушать все доступные порты довольно просто:

Вот и все.

0 голосов
/ 09 апреля 2010

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

Если вы контролируете оба конца, вы можете отправить номер порта как часть вашего собственного протокола.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...