控制USB端口的电源?

时间:2009-12-17 23:08:11

标签: c# c++ usb drivers

有人知道如何控制某个USB端口上的USB引脚吗?我认为在汇编程序中肯定是可能的,但是C ++或C#呢?

我希望能够将USB电池用作LED的电源或类似的东西。那么一个程序就可以启动它并关闭电源使其闪烁。

我知道这听起来毫无意义,但我需要做一些很棒的事情。

我也知道它可能需要自定义驱动程序。

10 个答案:

答案 0 :(得分:10)

您不能简单地切换USB端口上的引脚。期。 USB是一种串行协议。连接器包含

  1. 电源。主机可以控制电源线,因为它可以在过载时切断电源。这是由USB主机驱动程序完成的,这意味着PC中主机适配器的驱动程序。这并不意味着您可能需要任何不使用操作系统已经提供驱动程序的任何设备类的硬件的自定义设备驱动程序。
  2. 数据。数据通过串行协议发送,因此如果您使用USB,则无法控制这些引脚。
  3. 如果您想获得一些IO端口,则需要更多逻辑。您至少需要遵循USB协议的东西,这意味着某种微控制器(或像FTDI USB控制器这样的特殊USB设备控制器.FT232和FT245特别适合使用)。对于基于低端微控制器的解决方案,V-USB driver for AVR controllers可能很有趣。

    为了便于PC上的bit-banging IO引脚,请使用并行端口。 USB真的不适用于此。

答案 1 :(得分:7)

USB并非易事,所以我猜你会遇到一些问题(误)使用它。你可以/很多/更好(IMHO)标准串口,已经用于很多年的东西,有大量的例子可用。如果目标计算机上没有可用的串行端口,则可以使用USB->串行接口电缆。

话虽这么说,你可能想看看@: http://sourceforge.net/projects/libusbdotnet/

LP, 德扬

答案 2 :(得分:6)

根据http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

USB 2.0名义上支持每端口电源切换:

Hub Descriptor:
[...]
  wHubCharacteristic 0x0089
    Per-port power switching
[...]

可悲的是,作者报告称,虽然集线器的固件声称支持这一点,但制造商已经在电路板上偷工减料。

答案 3 :(得分:3)

USB端口的电源和接地引脚没有软件控制,至少在PC芯片组上是这样。这是由USB控制器在硬件中处理的。如果您想通过软件控制TTL电压,请查看USB并口适配器。

答案 4 :(得分:3)

我认为尝试打开和关闭USB电源并不是一个很好的方法:你的USB控制器有可能做到这一点,但它不是一个“正常”的事情

可能最简单的方法是使用FTDI FT245 USB->并行芯片。如果你只是试图闪烁一些闪烁的灯光,可能会出去买一个标准的USB - >并行打印机电缆和接口...你可以通过非常简单的软件控制获得8位输出,而且只需要一点点工作就能获得更多。

或者全力以赴,购买内置USB的微控制器...可能性无穷无尽!

答案 5 :(得分:1)

我认为您正在寻找USB设备。可以制作一个简单的充电器,通过放置或升压调节器来升高5v或调节器以驱动到较低的充电电压。打开或关闭它需要USB设备。

答案 6 :(得分:1)

通过执行“安全移除硬件”USB设备时发生的任何事情, 可以可以打开和关闭设备的电源,但我不是百分之百肯定这会关闭电源,它可能只是向设备发送信号告诉它它已断开连接,这使它自动关闭。

您尝试做的最好的选择是构建一个实际与计算机通信的USB设备(可能通过自定义驱动程序,但您也可以使用标准驱动程序,如HID设备)。您可以让计算机向您的设备发送“开”或“关”(或任何其他您可以想到的东西),这可以解释您认为合适的信号(可能是通过打开和关闭您正在谈论的LED)。这并不像听起来那么难。您可以购买带有USB接口的微控制器,例如Arduino或一些高端PIC。这些微控制器的许多制造商都提供了解释如何与它们进行USB接口的文档。

答案 7 :(得分:1)

实际的电源和接地引脚无法实现。你应该阅读维基百科USB文章的this部分。

答案 8 :(得分:1)

您需要的是带可编程I / O引脚(a.k.a。 PIO )或UART(RS232)的开发板。

最简单的方法是将LED连接到清除发送(CTS)以及接地或VCC。 CTS线路上的输出将打开或关闭LED,具体取决于另一端是否接地。可以使用正常的I / O引脚,但它们用于UART中的串行数据传输。 UART通常从这些引脚构建一个8位字符;但直接通过RTS(请求发送)和CTS值。

使用PIO时,您只需在变量中设置一个位并将该变量写入PIO集的地址即可。您可能还需要锁定位。一些PIO引脚会记住该值,直到写入下一个值(称为锁存),其他PIO引脚会记住该值,只要它被写出即可。

答案 9 :(得分:0)

问题是控制USB的安培数大多数答案未能考虑到USB的各种mA及其对电压的影响。

通用USB 1.0和2.0输出等于500 mA或0.5 A. 500mA乘以5伏等于2.5瓦功率。

1 A将为您提供全功率5瓦,华硕Ai充电器可以操作USB 2.0输出1.2 A或1200 mA,为您提供6瓦输出。