首页 文章

异步批量数据传输

提问于
浏览
2

我正在开发Android Galaxy S III智能手机和不符合Android Open Accessory设备定义的设备之间的USB通信 . 我想将异步批量数据从设备传输到主机 . 主机和设备之间的连接正常工作,通过向设备发送控制命令已经验证了什么 .

  • 可以使用批量类型的 endpoints (USB_ENDPOINT_XFER_BULK)完成此传输,还是必须是MissileLauncher应用程序示例中指定的中断类型(USB_ENDPOINT_XFER_INT)?

  • 在connection.requestWait返回或需要检查其他一些条件后,request.queue调用是否填充数据缓冲区?

1 回答

  • 0

    您必须使用批量 endpoints 进行批量传输,无论是进行异步传输还是同步传输(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);
        }
    

    我希望在有条件的情况下使用处理程序将数据发送到我的活动,但是当我的设备插入到Android设备时我无法发送 . 只有当我插入我的设备时,如果条件正常,我可以使用处理程序将数据发送到活动 . (https://stackoverflow.com/questions/35350251/android-asynchronous-bulk-transfer-with-usb-host-api#

相关问题