1

我正在使用Android USB 主机模式并希望执行异步批量传输。到目前为止,我已经成功地使用了同步批量传输,但是在掌握异步传输的各个部分是如何组合在一起时遇到了一些麻烦。从UsbRequest文档(我的粗体):

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

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

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

4

1 回答 1

0

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

您可以跨多个端点排队多个 UsbRequest,并通过重复调用来消耗它们的完成状态,requestWait()直到您没有更多未完成的请求。

于 2012-09-12T16:27:15.447 回答