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设备固件方面,请勿在常见接口(interface)类(例如HID)上创建中断端点。创建一个新的特定于供应商的接口(interface),否则,如果它是HID并且请求队列可能失败,则内核可能会占有该接口(interface),这就是我所发生的事情。
  • 关于Android USB requestWait不返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12781807/

    10-12 02:53