Skip to main content
切断并恢复可编程 USB 集线器某个端口的供电。测试用它来迫使被测设备重新枚举,或者模拟一次拔线。

句柄

方法

方法参考

enable() -> Result<()>disable() -> Result<()>

给该端口上电或断电。

toggle() -> Result<bool>

翻转该端口的供电状态。 返回: 端口现在已启用时为 true,现在已禁用时为 false —— 是翻转之后的状态,而不是之前的。

state() -> Result<bool>

读取该端口是否已通电。
返回: 已启用时为 true
state() 需要 Box 软件 0.29.0 或更高版本。更旧的 Box 会拒绝这个动作,而该 crate 会把这个特定的拒绝转换成 Error::UnsupportedByBox,信息是 the 'state' action on /usb/command requires box software >= 0.29.0; update the box or use toggle/enable/disable

示例

迫使被测设备重新枚举,并等它回来

在 Plugable 扩展坞上,已断电端口上的设备在供电恢复之前仍然列在总线上。于是上面那个循环可能立刻匹配到旧条目,而被测设备其实还没有重新枚举。在 Plugable 扩展坞上,请用 CLI 的 lager usb NET cycle,它会等待集线器报告重新连接。

受支持的硬件

说明

  • 一个 Net 对应一个端口。对 usb1 做断电重启不会影响该集线器的其他端口。
  • 端口上的设备在总线上的 devnum 会随重新枚举而改变。检查设备是否回来时,请按序列号或 vid/pid 匹配,绝不要按 devnum
  • 给某个端口断电,可能会移除 Box 用于另一个 Net 的设备。挂在那个端口后面的调试探针或串口适配器会在测试中途消失。