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()
。为什么会这样?
最佳答案
代码中的 requestWait()
将等待 request.queue(byteBuffer, 9)
的结果
以下是它未返回的一些可能原因:
您的请求队列与您的 USB 设备实际发送数据的端点不同。仔细检查您是否在正确的接口(interface)和端点上收听。
在 USB 设备固件端,不要在 HID 等通用接口(interface)类上创建中断端点。创建一个新的供应商特定接口(interface),否则如果它是 HID,内核可能会获取该接口(interface)并且请求队列可能会失败,这就是我遇到的情况。
关于android usb requestWait不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781807/