【问题标题】:Asynchronous bulk data transfer异步批量数据传输
【发布时间】:2013-02-20 22:38:53
【问题描述】:
我正在研究 Android Galaxy S III 智能手机和不符合 Android Open Accessory 设备定义的设备之间的 USB 通信。我想将异步批量数据从设备传输到主机。主机和设备之间的连接工作正常,已通过向设备发送控制命令进行验证。
是否可以使用批量类型的端点 (USB_ENDPOINT_XFER_BULK) 完成此传输,或者它必须是 MissileLauncher 应用示例中指定的中断类型 (USB_ENDPOINT_XFER_INT)?
connection.requestWait返回后request.queue调用是否填满数据缓冲区还是需要检查其他一些条件?
【问题讨论】:
标签:
android
asynchronous
usb
transfer
bulk
【解决方案1】:
您必须使用批量端点进行批量传输,无论是异步传输还是同步传输 (USB_ENDPOINT_XFER_BULK)。
第二个问题我不能给你明确的答案,因为我对这个问题有太多的问题。我可以用下面的代码填充我的缓冲区。通常 connection.requestWait() 方法在 request.queu(...) 方法之后调用。但是我在这种状态下有问题
ByteBuffer buffer = ByteBuffer.allocate(512);
buffer.order(ByteOrder.LITTLE_ENDIAN);
UsbRequest request = new UsbRequest();
request.initialize(usbDeviceModel.getConnection(), usbEndpoint2);
request.queue(buffer, 512);
if(request == usbDeviceModel.getConnection().requestWait()){
Message msg = imageViewFragment.usbDataHandler.obtainMessage();
msg.obj = buffer.array();
imageViewFragment.usbDataHandler.sendMessage(msg);
}
我想在 if 条件之后使用处理程序将数据发送到我的活动,但是当我的设备插入到 Android 设备时我无法发送。仅当我在条件正常的情况下拔出设备并且我可以使用处理程序将数据发送到活动时。 (https://stackoverflow.com/questions/35350251/android-asynchronous-bulk-transfer-with-usb-host-api#)