Управлять питанием USB-порта? [закрытый]

Кто-либо знает, как управлять контактами USB на определенном USB-порте? Я думаю, что это определенно возможно в ассемблере, но что относительно C++ или C#?

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

Я знаю, что это звучит бессмысленным, но я должен сделать это для чего-то потрясающего.

Я также знаю, что это могло бы потребовать пользовательского драйвера.

29
задан duskwuff 18 September 2017 в 03:53
поделиться

8 ответов

USB - это нетривиально, поэтому я думаю, у вас возникнут некоторые проблемы (неправильное) его использование. Вам было бы / намного / лучше (IMHO) со стандартными последовательными портами, которые использовались для подобных вещей в течение многих лет, с множеством доступных примеров. Если у вас нет последовательного порта на вашей целевой машине, вы можете использовать USB-> последовательный интерфейсный кабель.

При этом вы, вероятно, захотите взглянуть @: http://sourceforge.net/projects/libusbdotnet/

LP, Деян

7
ответ дан 28 November 2019 в 01:58
поделиться

Нет программного управления контактами питания и заземления порта USB. , по крайней мере, на чипсетах ПК. Это аппаратно обрабатывается контроллером USB. Если вам нужно программное управление напряжением TTL, приобретите адаптер параллельного порта USB.

3
ответ дан 28 November 2019 в 01:58
поделиться

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

Вероятно, самый простой способ - использовать что-то вроде FTDI FT245 USB-> параллельный чип. Если вы просто пытаетесь мигать мигающими лампочками, возможно, выйдите и купите стандартный USB -> параллельный кабель принтера и интерфейс к нему ... вы получите 8-битный вывод с очень простым программным управлением и довольно много больше, приложив лишь немного усилий.

Или сделайте все возможное и получите микроконтроллер со встроенным USB ... возможности безграничны!

Вероятно, самый простой способ - использовать что-то вроде FTDI FT245 USB-> параллельный чип. Если вы просто пытаетесь зажечь несколько мигающих огней, возможно, выйдите и купите стандартный USB -> параллельный кабель принтера и интерфейс к нему ... вы получите 8 бит вывода с очень простым программным управлением и довольно много больше, приложив немного усилий.

Или сделайте все возможное и получите микроконтроллер со встроенным USB ... возможности безграничны!

Вероятно, самый простой способ - использовать что-то вроде FTDI FT245 USB-> параллельного чипа. Если вы просто пытаетесь зажечь несколько мигающих огней, возможно, выйдите и купите стандартный USB -> параллельный кабель принтера и интерфейс к нему ... вы получите 8 бит вывода с очень простым программным управлением и довольно много больше, приложив немного усилий.

Или сделайте все возможное и получите микроконтроллер со встроенным USB ... возможности безграничны!

3
ответ дан 28 November 2019 в 01:58
поделиться

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

1
ответ дан 28 November 2019 в 01:58
поделиться

Нельзя просто переключать контакты на USB-порте. Период. USB - это последовательный протокол. Разъем содержит

  1. Power. Хост может управлять линиями электропередач, так как он может отключить питание в случае перегрузки. Это делается драйвером хоста USB, то есть драйвером адаптера хоста на ПК. Это не означает, что вам может понадобиться какой-либо специальный драйвер устройства для оборудования, которое не использует какие-либо классы устройств, драйверы которых уже поставляются ОС.
  2. Данные. Данные пересылаются по последовательному протоколу, поэтому невозможно управлять этими контактами, если вы используете USB.

Если вы хотите получить несколько портов ввода-вывода, вам нужно больше логики. Вам понадобится хотя бы что-то, что соответствует протоколу USB, что означает какой-то микроконтроллер (или специальный контроллер USB-устройства, например контроллеры USB FTDI . Особенно приятно работать с FT232 и FT245). Для решения на базе микроконтроллера низкого уровня может быть интересен драйвер V-USB для контроллеров AVR .

Для упрощения работы с выводами ввода-вывода на ПК используйте параллельный порт. USB действительно не сделан и не подходит для этого.

10
ответ дан 28 November 2019 в 01:58
поделиться

Это может включать и выключать питание устройства, делая все, что происходит, когда вы «безопасно извлекаете оборудование» из USB-устройства, но я не 100 % уверен, что это отключает питание, он может просто послать сигнал устройству, что оно отключено, что заставит его выключиться.

Лучшее решение для того, что вы пытаетесь сделать, - это создать USB-устройство, которое фактически связывается с компьютером (возможно, через специальный драйвер, но вы, вероятно, также можете использовать стандартный драйвер, например HID-устройство). Вы бы попросили компьютер посылать сигнал «включено» или «выключено» (или что-то еще, что вы можете придумать) на ваше устройство, которое будет интерпретировать сигналы по вашему усмотрению (возможно, путем включения и выключения того светодиода, о котором вы говорили). Это не так сложно, как кажется. Вы можете купить микроконтроллеры с USB-интерфейсами на борту, такие как Arduino, или некоторые высококачественные PIC. Многие производители микроконтроллеров такого типа имеют документы, объясняющие, как установить с ними интерфейс USB.

1
ответ дан 28 November 2019 в 01:58
поделиться

What you need is either a development board with programmable I/O pins (a.k.a. PIO) or a UART (RS232).

The easiest method is to connect the LED to the Clear To Send (CTS) and either Ground or VCC. The output on the CTS line will turn the LED on or off depending on whether the other end is connected to ground or not. The normal I/O pins could be used, but they are for serial data transmission in the UART. The UART usually builds an 8-bit character from these pins; but passes the RTS (Request To Send) and CTS values directly through.

When using a PIO, all you have to do is set a bit in a variable and write that variable to the address of the PIO set. You may also have to latch in the bits. Some PIO pins will remember the value until the next value is written (called latched), others remember the value as long as it is written out.

1
ответ дан 28 November 2019 в 01:58
поделиться

Невозможно сделать это для реальных контактов питания и заземления. И вам, вероятно, следует прочитать эту часть статьи Wikipedia USB.

1
ответ дан 28 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: