有人知道如何控制某个 USB 端口上的 USB 引脚吗?我认为这在汇编程序中肯定是可能的,但是 C++ 或 C# 呢?
我希望能够使用 USB 电池作为 LED 或类似设备的电源。所以然后一个程序会打开它并关闭它使其闪烁。
我知道这听起来毫无意义,但我需要做一些很棒的事情。
我也知道它可能需要自定义驱动程序。
您不能简单地切换 USB 端口上的引脚。时期。USB 是一种串行协议。连接器包含
如果你想获得一些 IO 端口,你需要更多的逻辑。您至少需要遵循 USB 协议的东西,这意味着某种微控制器(或特殊的 USB 设备控制器,如FTDI USB 控制器。FT232 和 FT245 特别好用)。对于基于低端微控制器的解决方案,AVR 控制器的 V-USB 驱动程序可能很有趣。
对于 PC 上的简单位敲击 IO 引脚,请使用并行端口。USB 确实不是制造出来的,也不适合那样做。
根据http://www.gniibe.org/development/ac-power-control-by-USB-hub/index
USB 2.0 名义上支持每端口电源切换:
Hub Descriptor:
[...]
wHubCharacteristic 0x0089
Per-port power switching
[...]
可悲的是,作者报告说,虽然可能集线器的固件声称支持这一点,但制造商在电路板上偷工减料。
USB 不是微不足道的,所以我猜你在使用它时会遇到一些问题(错误)。使用标准串行端口,您会/much/更好(恕我直言),这些端口多年来一直用于类似的东西,有很多可用的示例。如果您的目标机器上没有可用的串行端口,您可以使用 USB-> 串行接口电缆。
话虽这么说,你可能想看看@:http: //sourceforge.net/projects/libusbdotnet/
LP,德扬
至少在 PC 芯片组上,没有软件控制 USB 端口的电源和接地引脚。这是由 USB 控制器在硬件中处理的。如果您想通过软件控制 TTL 电压,请考虑使用 USB 并行端口适配器。
我认为尝试打开和关闭 USB 电源并不是一个好方法:您的 USB 控制器可能能够做到这一点,但这不是“正常”的事情。
可能最简单的方法是使用类似 FTDI FT245 USB-> 并行芯片的东西。如果你只是想闪烁一些闪烁的灯,也许出去买一个标准的 USB -> 并行打印机电缆和接口......你会通过非常简单的软件控制获得 8 位输出,而且相当多更多的工作只需要一点点工作。
或者全力以赴,买一个内置 USB 的微控制器……可能性无穷无尽!
我认为您正在寻找 USB 设备。可以制作一个简单的充电器,方法是放置或升压调节器以提高 5v 或调节器驱动到较低的充电电压。打开或关闭它需要一个 USB 设备。
当您“安全删除硬件”USB设备时,可以通过执行任何操作来打开和关闭设备的电源,但我不能100%确定这会关闭电源,它可能只是向设备告诉它它已断开连接,这使其自行关闭。
您尝试做的最好的选择是构建一个实际与计算机通信的 USB 设备(可能通过自定义驱动程序,但您也可以使用标准驱动程序,如 HID 设备)。您可以让计算机向您的设备发送“开”或“关”(或任何其他您能想到的东西),它会按照您认为合适的方式解释信号(可能通过打开和关闭您正在谈论的那个 LED)。这并不像听起来那么难。您可以购买板载带有 USB 接口的微控制器,例如 Arduino,或一些高端 PIC。许多这类微控制器的制造商都有可用的文档来解释如何与它们进行 USB 接口。
您需要的是带有可编程 I/O 引脚(又名PIO)或 UART(RS232)的开发板。
最简单的方法是将 LED 连接到清除发送 (CTS) 和接地或 VCC。CTS 线上的输出将根据另一端是否接地来打开或关闭 LED。可以使用普通的 I/O 引脚,但它们用于 UART 中的串行数据传输。UART 通常从这些引脚构建一个 8 位字符;但直接通过 RTS(请求发送)和 CTS 值。
使用 PIO 时,您所要做的就是在变量中设置一个位并将该变量写入 PIO 集的地址。您可能还必须锁定这些位。一些 PIO 管脚会记住该值,直到下一个值被写入(称为锁存),其他 PIO 管脚会记住该值,只要它被写出。
对于实际的电源和接地引脚,没有办法做到这一点。您可能应该阅读Wikipedia USB 文章的这一部分。
问题是控制 USB 的安培数大多数答案都没有考虑到 USB 的 mA 变化及其对电压的影响。
通用 USB 1.0 和 2.0 输出等于 500 mA 或 0.5 A。500mA 乘以 5 伏等于 2.5 瓦功率。
1 A 将为您提供全部 5 瓦的功率,而 USB 2.0 可以通过 ASUS Ai 充电器输出 1.2 A 或 1200 mA 为您提供 6 瓦的输出。