Android USB主机异步批量传输示例

时间:2012-08-17 02:59:02

标签: java android asynchronous usb android-usb

我正在使用Android USB Host mode,并希望执行异步批量传输。到目前为止,我已经成功地使用了同步批量传输,但是在掌握异步传输的各个部分时遇到了一些麻烦。来自UsbRequest文档(大胆的我的):

  

批量端点上的请求可以通过bulkTransfer(UsbEndpoint,byte [],int,int)同步发送,也可以通过queue(ByteBuffer, int)requestWait() [a UsbDeviceConnection方法] 异步发送。

好的,这是否意味着我从现有的执行线程调用queue(),然后在另一个线程的其他地方调用requestWait()? requestWait()在请求完成时从哪里获取逻辑?我所做的大多数异步工作都是使用Javascript和Python等语言,通常是将回调函数作为参数传递。在Java中,我可能会传递一个实现特定方法作为回调的对象,但我无法在任何地方看到这种情况。也许我对整个事情的心理模型是错误的。

有人可以提供发送异步批量传输的独立示例吗?

1 个答案:

答案 0 :(得分:0)

基本上,requestWait()方法将在排队UsbRequest完成后返回。您可以在同一个线程或另一个线程上执行此操作。使用setClientData()getClientData()方法确定哪个请求刚刚完成,假设您有多个未完成的请求!

您可以跨多个EndPoints对多个UsbRequests进行排队,并通过反复调用requestWait()来消耗其完成状态,直到您没有更多未完成的请求为止。