Отсоедините USB-устройство, не отсоединяя и не подключая его повторно.

Отсоедините USB-устройство, не отсоединяя и не подключая его повторно.

У меня есть IRTOY, купленный на dangerousprototypes. Я запускаю его в Windows 7 x64 с WinLirc 0.9c. Но иногда устройство просто внезапно зависает, и мне нужно отключить и снова подключить его, чтобы оно снова заработало. Отключение и включение COM-порта из диспетчера устройств часто приводит к появлению сообщения об ошибке с Windows, в котором говорится, что устройство не может быть активировано.

Итак, похоже, что проблема с оборудованием связана с IRTOY. Теперь я ищу устройство для отключения питания через USB. Оно должно быть способно отключать питание устройства удаленно. Оно должно фактически имитировать физическое удаление устройства из порта USB, как реле с разъемами USB типа «папа» и «мама».

Есть ли решение этой проблемы?

решение1

Видимо, в IRTOY есть ошибка, и требуется полная перезагрузка, а выключение — единственный способ сделать это. Плохо.

Одним из решений для переключения питания VBUS программным способом может стать использование USB-концентратора с переключаемыми контроллерами питания портов (их обычно трудно найти, но все равно проще, чем найти материнскую плату ПК с контроллерами питания портов). Затем вам следует выдать ClearPortFeature(PORT_POWER) порту с подключенным IRTOY, а затем SetPortFeature(PORT_POWER).

Как именно это сделать из пространства приложения, я не уверен, но бесплатный USB Device Tree Viewer (отУве Зибер) можно выключить и включить порт VBUS с помощью всплывающей опции «Перезапустить устройство». Помните, что к порту USB обычно подключен конденсатор большой емкости, поэтому может потребоваться некоторое время для сброса VBUS, поэтому команды Clear и Set должны быть правильно разделены во времени. К сожалению, USBTreeView делает это слишком быстро. В качестве альтернативы вы можете перезапустить весь концентратор, для выключения VBUS на его нисходящих портах требуется достаточно много времени.

Если у Уве нет открытого исходного кода, вам нужно будет перейти по ссылкеMicrosoft SDKдля основного исходного кода USBView и выясните, как передать драйверу команды отключения/включения порта.

Связанный контент