Это просто не то, как работают последовательные порты. Это не шина, такая как USB или PCI, где вы можете подключить что-то, а операционная система сделает ах-ха, новое оборудование! открытие автоматически. Последовательные порты очень примитивны, начиная с каменного века компьютерного оборудования.
Требуется человек, чтобы подключить разъем устройства последовательного порта. Если повезет, на разъеме будет наклейка, в которой указано, какой номер COM-порта назначен этому разъему Хотя эта удача трудно прийти в эти дни. Затем она скажет программе установить соединение с этим конкретным COM-портом. Гипертерминал - это каноническая реализация такой программы в Windows.
Вы не можете реально открыть каждый COM-порт, который может быть доступен. Это не позволяет другой программе использовать другой COM-порт. Например, вы предотвратите использование модема. Частью наследия каменного века является то, что только одна программа может открыть COM-порт, любая другая программа будет заблокирована.
Итак, предоставьте вашей программе пользовательский интерфейс, который позволяет пользователю выбирать COM-порт (ы). Сохраните выбор в данных конфигурации, вероятно, * вероятно, что устройство все еще подключено к тому же порту при запуске резервного копирования. Вы можете использовать WMI и класс Win32_SerialPort, чтобы предоставить лучшее описание для COM-порта (больше, чем просто число). Некоторые эмуляторы последовательного порта USB могут устанавливать для свойства Description нечто распознаваемое.
SerialPort.GetPortNames () перечисляет доступные номера COM-портов. Базовым тестом работоспособности является проверка свойства SerialPort.DsrHolding, оно должно быть истинным, когда устройство последовательного порта подключено и включено.