是的,它可以使用libusb完成(使用C++的libusb用法,请参阅this link)。现在有几件事要记住 -
1 - 什么是设备地址? (可以得到这个使用libusb的API)
libusb_get_device_list (libusb_context *ctx, libusb_device ***list)
libusb_get_device_address (libusb_device *dev)
libusb_get_port_number (libusb_device *dev)
2 - 是连接到根集线器端口或集线器端口的设备? (这可以通过读取的/ dev/sdb1的或SDA1的父设备来完成)
libusb_get_parent (libusb_device *dev)
3 - 如果其连接至集线器,然后做一个控制转移到该端口的“清除” PORT_POWER特征。这将关闭端口,设备将断开连接。您可以“设置”PORT_POWER功能打开端口并重新连接设备。请记住,您不会得到任何符合规范的断开连接事件。 (EHCI或XHCI)
int libusb_control_transfer ( libusb_device_handle * dev_handle,
uint8_t bmRequestType,
uint8_t bRequest,
uint16_t wValue,
uint16_t wIndex,
unsigned char * data,
uint16_t wLength,
unsigned int timeout
)
4 - 如果设备被连接到根集线器端口直接,然后请检查的libusb支持结算根集线器端口的电源。我不确定这一点。这也取决于主机控制器驱动程序堆栈。
请按照我在顶部提到的链接来举例说明这些API的用法。
有'sject'弹出程序.. –
所以有。但我也(可能)需要以编程方式重新插入它,以便只解决我的一半问题。我会编辑这个问题来说明问题。谢谢。 – IndefatibableGoodForm
您是否探索过手册页?在系统上列出USB驱动器的命令是什么,如果有的话? (使用谷歌)那么你怎么知道巴士,港口,设备?你怎么知道你什么时候不知道? (提示 - 谷歌“我如何列出所有的USB设备?)也许你可能会做更多的研究......有这些问题的其他资源,但没有一个是C++ –