[英]How are USB-HID devices handled that have no outgoing endpoints?
我一直在开发一个 USB-HID Java for Android 插件,它需要与许多设备进行通信,并且我使用 bulkTransfer() 方法取得了大部分成功。
直到我遇到一个没有任何传出端点的硬件设备。 这个特定的接口有 2 个接口和 1 个端点。 两者都是传入的,因此无法使用 bulkTransfer() 向其发送命令。
我的问题:
1) 是否可以使用 controlTransfer() 方法向设备发送相同的命令?
2) 我可以使用传递给 bulkTransfer() 的同一个字节数组吗?
3)如果以上都成立,则controlTransfer()上的value和index参数有什么作用:
我看了看: controlTransfer 和 bulkTransfer 有什么不同?
但它并没有真正回答我的主要问题。
首先要注意的是,HID 倾向于使用中断输入而不是批量传输。 这与控制管道或散装管道不同。 当您移动鼠标或键盘(通常)时,它会向您的计算机发送一条中断消息,因此操作系统不必不断轮询控制管道以获取报告。 在 android 中,这是通过queue
/ requestWait
。
我个人从未见过带有散装管道的 HID。
所有设备都有端点 0,它是一个双向控制管道。 如果您控制设备的固件,则可以在控制管道上发送自定义命令。 所以理论上,你可以这样做并使用相同的字节数组。 但是您需要了解您的设备在请求 ID、索引和值方面的期望。 索引可能为 0(接口描述符; UsbInterface.getId
)。 值还取决于您的设备期望什么(尝试 0)。
作为参考,这里是HID 规范。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.