Заблокированный последовательный порт в Vista

Я работаю над приложением, которое взаимодействует с последовательным портом, и на моей машине разработки я использую Vista, и этот последовательный порт представляет собой соединение Bluetooth. Иногда последовательный порт оказывается в состоянии, когда мое приложение больше не может к нему подключаться. В .net я получаю исключение IOException с сообщением «Элемент не найден».

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

Есть ли способ узнать, какой процесс и / или .dll имеет последовательный порт и / или принудительно закрыть порт?

Если это имеет значение, мое приложение написано на C #, но структурно неудобно открывать и закрывать порт с помощью оператора using.

Спасибо, Энди


person AndrewCr    schedule 31.12.2008    source источник


Ответы (1)


Насколько мне известно, вы не можете закрыть последовательный порт, для которого у вас нет дескриптора. Мой опыт работы с последовательными портами Bluetooth показывает, что они могут быть сопоставлены с разными номерами COM-портов во время подключения, а иногда могут оставлять поддельные COM-порты при отключении. Например, в настоящее время у меня нет подключенных устройств Bluetooth, но если я захожу в диспетчер устройств, я вижу в общей сложности одиннадцать COM-портов, перечисленных как Последовательный порт Bluetooth. В свойствах каждого из этих портов устройство отображается как работают и доступны, и я обычно могу открыть эти порты, хотя иногда получаю сбои. Моя работа заключается в том, чтобы указать номера COM-портов для подключенных устройств через свойства / расширенный / номер COM-порта. Я не уверен, связана ли проблема с драйвером (в данном случае с компанией IVT) или с тем, как Windows управляет последовательными портами blutooth.

Извините, я больше ничем не помог.

person SmacL    schedule 31.12.2008