У меня есть USB-модем, и он часто отключает сигнал. Когда это произойдет, я вытаскиваю вилку из розетки и снова подключаю его с USB-порта, и он снова получает сигнал; Могу ли я написать программу, которая делает это без физического отключения модема от порта?
Могу ли я написать программу, которая вставляет/выключает USB
Ответ 1
Как указано в комментарии, программный сброс USB-портов - специфичная для ОС функция.
В Windows самый простой подход - это, вероятно, использование WMI aka Инструментарий управления Windows. Вы можете получить несколько фрагментов, которые "бесполезны" с портами USB на разных языках, путем поиска в Интернете с помощью "WMI", "USB" и таких ключевых слов.
Эта статья MSDN имеет больший интерес, чем просто USB-контроллеры, но дает хороший обзор модели CIM и интерфейс WMI.
Edit:
Действительно, если этот вопрос относится к Windows, я просто обнаружил, что это дубликат на SO:
- Подключить и отключить usb программно без выключения и замены
- Выключение питания USB-устройства в программном обеспечении
BTW, обе эти ссылки были автоматически идентифицированы SO, в списке "Related" справа от страницы
== > Нам нужно помнить, чтобы систематизировать этот список более систематически
== > Во многих случаях этот список чертовски хорош
Ответ 2
Я думаю, что самый простой способ - это аппаратный способ: если вы вырезаете USB-мощность, тогда у вас будет отключенное/подключенное событие.
Два решения:
1/USB-концентратор с питанием: у большинства USB-концентраторов есть внешний разъем питания, который механически отключает питание от хоста при вставке вилки питания. Выключите питание от адаптера питания, и все устройства под концентратором будут отключены.
2/Просто взломайте обычный USB-кабель: вам просто нужно отрезать провод питания (красный).
Чтобы отключить питание, вы можете использовать USB-ретранслятор, подключенный к другому USB-порту. Вы можете найти USB-реле повсюду в сети, но вот некоторые из них:
http://www.yoctopuce.com/EN/products/category/usb-actuators (без водителя)