11
ByteBuffer byteBuffer = ByteBuffer.allocate(9);;    
UsbRequest request = new UsbRequest();
request.initialize(mConnection,mEndpointIntr);
boolean b = request.queue(byteBuffer, 9);
Log.d(TAG, "start the request wait");
UsbRequest ur = mConnection.requestWait();

我想使用 Android USB 中断。上面的代码是从我自己的 USB 板接收数据的线程。但是当我尝试调用UsbRequest ur = mConnection.requestWait();该函数不返回时,它总是会遇到requestWait(). 为什么会这样?

4

2 回答 2

8

您的requestWait()代码中的 将等待结果request.queue(byteBuffer, 9)

以下是它不返回的一些可能原因:

  1. 您的请求队列与您的 USB 设备实际发送数据的端点不同。仔细检查您是否正在侦听正确的接口和端点。

  2. 在 USB 设备固件方面,不要在 HID 等通用接口类上创建中断端点。创建一个新的供应商特定接口,否则如果它是 HID,内核可能会控制该接口并且请求队列可能会失败,这就是发生在我身上的事情。

于 2012-12-01T02:45:12.930 回答
0

在我自己的带有两个端点(IN 和 OUT)连接到 MK802 的 USB HID 设备上,我遇到了同样的问题(排队请求返回 false)。我用 false 调用了 claimInterface。设置以下有帮助,我可以收到数据。

c.claimInterface(device.getInterface(0), true);
于 2013-04-21T22:03:37.630 回答