android usb requestWait不归

时间:2012-10-08 12:31:00

标签: android request

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()。为什么会这样?

2 个答案:

答案 0 :(得分:8)

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

的结果

以下是可能无法返回的一些原因:

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

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

答案 1 :(得分:0)

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

c.claimInterface(device.getInterface(0), true);