Member 10020245 Ответов: 2

Перезапуск последовательного порта


Я использую последовательный порт USB в C#. Операции чтения и записи последовательного порта .net работают хорошо, за исключением некоторых редких случаев. Если я останавливаю последовательные операции чтения-как в случае операции разрыва отладчика-последовательный порт, кажется, зависает. Даже если я перезапущу файл .exe, последовательный порт больше не будет считывать данные.

Я могу перезапустить его одним из двух способов: 1) отсоединить и снова подключить последовательный кабель USB или 2) вручную войти в Диспетчер устройств и сделать "отключить", а затем "включить". В любом случае последовательный порт снова начинает правильно считывать данные. Это, по-видимому, говорит о том, что проблема заключается не в последовательном передатчике данных.

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

Любые идеи оценены по достоинству.

Что я уже пробовал:

Я попытался очистить InBuffer и OutBuffer для порта, но это не имеет никакого эффекта.

2 Ответов

Рейтинг:
1

0x01AA

Usbser.sys все еще, кажется, глючит. Обходным путем для отладки может быть подключение вашего устройства через usb-концентратор.
Смотрите также обсуждение здесь: Проверка того, есть ли usbser.sys все еще работает/опрашивает устройство COM-порта/CDC[^]


Рейтинг:
1

Member 10020245

После небольшого дальнейшего экспериментирования я нашел чисто программное решение для повторного запуска застрявшего последовательного порта USB. Решение 1) вручную отключить/включить в Диспетчере устройств и 2) вручную отключить/снова подключить USB-кабель не подходит для оперативного использования-мне нужно чисто программное решение без вмешательства пользователя. Я попытался использовать DevCon для отключения/включения-однако на моем компьютере результат был таков, что шаг отключения devcon требовал перезагрузки, чтобы закончить работу. Это также считалось непригодным для операций из-за времени, необходимого для перезагрузки компьютера

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

Есть ли у кого-нибудь хоть малейшее представление о том, что здесь на самом деле происходит?