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()
。为什么会这样?
答案 0 :(得分:8)
代码中的requestWait()
将等待request.queue(byteBuffer, 9)
以下是可能无法返回的一些原因:
您的请求队列位于与USB设备实际发送数据不同的端点上。仔细检查您是否正在侦听正确的接口和端点。
在USB设备固件方面,请勿在通用接口类(如HID)上创建中断端点。创建一个新的供应商特定接口,否则如果它是HID并且请求队列可能失败,则内核可能会获取该接口,这就是我发生的事情。
答案 1 :(得分:0)
在我自己的USB HID设备上,有两个端点(IN和OUT)连接到MK802,我遇到了同样的问题(排队请求返回false)。我使用false调用了claimInterface。设置以下内容有帮助,我收到的数据没问题。
c.claimInterface(device.getInterface(0), true);