Могу ли я написать программу, которая вставляет/выключает USB

У меня есть USB-модем, и он часто отключает сигнал. Когда это произойдет, я вытаскиваю вилку из розетки и снова подключаю его с USB-порта, и он снова получает сигнал; Могу ли я написать программу, которая делает это без физического отключения модема от порта?

Ответ 1

Как указано в комментарии, программный сброс USB-портов - специфичная для ОС функция.

В Windows самый простой подход - это, вероятно, использование WMI aka Инструментарий управления Windows. Вы можете получить несколько фрагментов, которые "бесполезны" с портами USB на разных языках, путем поиска в Интернете с помощью "WMI", "USB" и таких ключевых слов.

Эта статья MSDN имеет больший интерес, чем просто USB-контроллеры, но дает хороший обзор модели CIM и интерфейс WMI.

Edit:
Действительно, если этот вопрос относится к Windows, я просто обнаружил, что это дубликат на SO:

BTW, обе эти ссылки были автоматически идентифицированы SO, в списке "Related" справа от страницы
  == > Нам нужно помнить, чтобы систематизировать этот список более систематически
  == > Во многих случаях этот список чертовски хорош

Ответ 2

Я думаю, что самый простой способ - это аппаратный способ: если вы вырезаете USB-мощность, тогда у вас будет отключенное/подключенное событие.

Два решения:

1/USB-концентратор с питанием: у большинства USB-концентраторов есть внешний разъем питания, который механически отключает питание от хоста при вставке вилки питания. Выключите питание от адаптера питания, и все устройства под концентратором будут отключены.

2/Просто взломайте обычный USB-кабель: вам просто нужно отрезать провод питания (красный).

Чтобы отключить питание, вы можете использовать USB-ретранслятор, подключенный к другому USB-порту. Вы можете найти USB-реле повсюду в сети, но вот некоторые из них:

http://www.yoctopuce.com/EN/products/category/usb-actuators (без водителя)

http://www.phidgets.com/products.php?category=9