«Порт COMx не существует» - исключение, генерируемое в Open () SerialPort - PullRequest
0 голосов
/ 08 июля 2011

Мой заголовок описывает мою проблему ... Не могу ничего сделать, чтобы решить ее.

Это последовательное COM-устройство, подключенное через USB-кабель (установлен соответствующий драйвер).Также я вижу, что COM-порт обнаружен системой и существует в следующем ключе реестра: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM

Пожалуйста, сообщите.

ОБНОВЛЕНИЕ: Извините, что не так объяснительнокак это должно быть.Возможно, я понял, почему это происходит: мое приложение подписалось на событие значений, добавленных / удаленных из HKLM \ HARDWARE \ DEVICEMAP \ SERIALCOMM.И приложение попыталось открыть порт сразу после того, как об этом заметили.Но порт может быть не готов в тот момент, и поэтому я получил «Порт не существует».Просто Thread.Sleep (2000) решил мою проблему.

Но это решение Sleep не кажется хорошим решением.Может быть, я должен проверить где-то еще для устройства, подключенного, что в реестре?Поэтому я подключусь к нему, когда он действительно существует и готов к подключению.

Спасибо за ваши ответы!Люблю переполнение стека!

Ответы [ 2 ]

1 голос
/ 09 июля 2011
  1. Пожалуйста, предоставьте фрагмент кода для вашего "open".

  2. Пожалуйста, укажите точный текст ошибки и сообщение (например, errno 57, errno 55 и т. Д.).

  3. Пожалуйста, укажите ваши версии C # / VS и ОС

  4. В: что говорит System.IO.Ports.SerialPort.GetPortNames?

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

  6. В: Что произойдет, если вы перезагрузите компьютер и сразу после этого попытаетесь снова запустить программу?

0 голосов
/ 08 июля 2011

Вы не дали нам много, чтобы продолжить. Из того, что вы сказали, вы можете попробовать использовать «COM1» в качестве имени com-порта вместо «COMx».

...