Управление мощностью USB-порта?
Кто-нибудь знает, как управлять USB-контактами на определенном USB-порту? Я думаю, что это возможно в ассемблере, но как насчет С++ или С#?
Я хочу использовать USB-аккумулятор в качестве источника питания для светодиода или что-то в этом роде. Таким образом, программа включит питание и отключит его.
Я знаю, что это звучит бессмысленно, но мне нужно сделать это для чего-то потрясающего.
Я также знаю, что для него может потребоваться собственный драйвер.
Ответы
Ответ 1
USB не является тривиальным, поэтому, я думаю, у вас будут некоторые проблемы (неправильные) с его использованием. Вы бы/много/лучше (IMHO) со стандартными последовательными портами, которые использовались для подобных вещей на протяжении веков, с большим количеством примеров. Если на вашем целевом компьютере нет последовательного порта, вы можете использовать USB- > последовательный интерфейсный кабель.
Говоря, вы, вероятно, захотите посмотреть @:
http://sourceforge.net/projects/libusbdotnet/
LP,
Деяна
Ответ 2
Вы не можете просто переключать контакты на USB-порт. Период. USB - это последовательный протокол. Коннектор содержит
- Питание. Хост может управлять линиями электропередач, так как он может отключить питание в случае перегрузки. Это что-то сделано драйвером USB-хоста, что означает драйвер хост-адаптера на ПК. Это не означает какой-либо пользовательский драйвер устройства, который вам может понадобиться для оборудования, которое не использует ни один из классов устройств, на которых ОС уже отправляет драйверы.
- Данные. Данные отправляются через последовательный протокол, поэтому нет способа управлять этими контактами, если вы используете USB.
Если вы хотите получить несколько портов ввода-вывода, вам потребуется больше логики. Вам нужно, по крайней мере, что-то, что следует за протоколом USB, что означает какой-то микроконтроллер (или специальный контроллер USB-устройства, например FTDI USB контроллеры. FT232 и FT245 особенно хороши для работы). Интересно, что для недорогого решения на базе микроконтроллера может оказаться интересным драйвер V-USB для контроллеров AVR.
Для облегчения бит-биений IO-контактов на ПК используется параллельный порт. USB действительно не создан и не подходит для этого.
Ответ 3
Согласно http://www.gniibe.org/development/ac-power-control-by-USB-hub/index
USB 2.0 номинально поддерживает переключение между портами:
Hub Descriptor:
[...]
wHubCharacteristic 0x0089
Per-port power switching
[...]
К сожалению, автор сообщает, что, хотя прошивка хабов утверждает, что поддерживает это, производители сократили углы на плате.
Ответ 4
Нет программного обеспечения для управления питанием и заземлением контактов USB-порта, по крайней мере, на чипсетах ПК. Это осуществляется с помощью USB-контроллера. Посмотрите на получение адаптера параллельного порта USB, если вы хотите, чтобы программное обеспечение контролировало напряжения TTL.
Ответ 5
Я думаю, что попытка включения и выключения питания USB не является таким отличным способом сделать это: возможно, ваш USB-контроллер способен это сделать, но это не было бы "нормальной" вещью.
Вероятно, самый простой способ - использовать что-то вроде параллельного чипа USB- > FTDI FT245. Если вы просто пытаетесь погасить некоторые мигающие огни, возможно, выйдите и купите стандартный USB-кабель с параллельным принтером и интерфейс к этому... вы получите 8 бит вывода с очень простым управлением программным обеспечением и довольно много больше с небольшим количеством работы.
Или пойдите весь боров и получите микроконтроллер со встроенным USB... возможности бесконечны!
Ответ 6
Я думаю, что вы ищете USB-устройство. Простое зарядное устройство можно было бы сделать, поставив или увеличив регулятор, чтобы поднять 5в выше или регулятор, чтобы привести к более низкому зарядному напряжению. Для его включения или выключения потребуется устройство USB.
Ответ 7
Возможно, вы сможете включить и выключить питание устройства, делая все, что происходит, когда вы "безопасно удаляете аппаратное" устройство USB, но я не уверен на 100%, что это отключает питание, оно может просто отправить сигнал к устройству говорит ему, что он отключен, что заставляет его отключиться.
Лучшая ставка для того, что вы пытаетесь сделать, - это создать USB-устройство, которое действительно общается с компьютером (возможно, с помощью специального драйвера, но вы, вероятно, также можете использовать стандартный драйвер, такой как HID-устройство). У вас будет компьютер, который отправит "on" или "off" (или что-нибудь еще, что вы можете придумать) на свое устройство, которое будет интерпретировать сигналы по вашему усмотрению (возможно, включив и выключив этот светодиод, о котором вы говорили). Это не так сложно, как кажется. Вы можете купить микроконтроллеры с интерфейсами USB на борту, такими как Arduino или некоторые из высококлассных ПОС. Многие производители таких микроконтроллеров имеют документы, в которых объясняется, как с ними взаимодействовать USB.
Ответ 8
Нет никакого способа сделать это для реальных контактов питания и заземления. И вы, вероятно, должны прочитать эту часть статьи Wikipedia USB.
Ответ 9
Вам нужна плата разработчика с программируемыми выводами ввода/вывода (a.k.a. PIO) или UART (RS232).
Самый простой способ - подключить светодиод к Clear To Send (CTS) и к земле или VCC. Выход на линии CTS включает или выключает светодиод в зависимости от того, подключен ли другой конец к земле или нет. Можно использовать обычные выводы ввода-вывода, но они предназначены для последовательной передачи данных в UART. UART обычно создает 8-битный символ из этих контактов; но передает значения RTS (Request To Send) и CTS напрямую.
При использовании PIO все, что вам нужно сделать, это установить бит в переменной и записать эту переменную на адрес набора PIO. Вы также можете защелкнуть бит. Некоторые PIO-булавки запоминают значение до тех пор, пока не будет записано следующее значение (называемое фиксированным), другие будут помнить значение до тех пор, пока оно выписано.
Ответ 10
Вопрос заключается в том, что максимальная мощность USB большинства ответов не учитывается при изменении мА USB и влияет на напряжение.
Общий выход USB 1.0 и 2.0 равен 500 мА или 0,5 А. 500 мА раз 5 вольт равна 2,5 Вт мощности.
1 A даст вам полную мощность 5 Вт, а USB 2.0 можно будет использовать ASUS Ai Charger для вывода 1,2 А или 1200 мА, чтобы дать вам 6 Вт.