gpt4 book ai didi

java - Android异步USB读取到ByteBuffer,但无法确定大小

转载 作者:行者123 更新时间:2023-11-29 09:21:12 26 4
gpt4 key购买 nike

我正在使用最近添加的适用于 Android 的 USB API 从 Android 3.1 操作系统(在摩托罗拉 Xoom 上)上基于 FTDI 的 USB 设备读取字节:http://developer.android.com/guide/topics/usb/host.html

但是,我在进行异步读取时遇到了问题。

        ByteBuffer bb = ByteBuffer.allocate(128);
UsbRequest request = new UsbRequest();
request.initialize(deviceConnection, deviceInterface.getEndpoint(0));
boolean sent = request.queue(bb, 128);
request = deviceConnection.requestWait();
if(request.getEndpoint() == deviceInterface.getEndpoint(0)) {
// Send a message to the Activity with the read array
Message msg = usbTest.handleAsyncMessage.obtainMessage();
msg.obj = bb.array()
usbTest.handleAsyncMessage.sendMessage(msg);
}

此函数从设备中正确读取字节。但是,它没有告诉我阅读了多少。 bb.position() 总是返回 0 而 bb.remaining() 总是返回 128。我不能确保我的读取将返回 128 个字节(可能读取,例如请求设备的状态,只发回大约 12 个字节),我有无法确定读取结束的位置和 ByteBuffer 中的垃圾开始的位置。我试过倒带 ByteBuffer 但标记没有被读取设置。有什么方法可以确定到底读取了多少字节?

谢谢

最佳答案

我不确定这是你的问题,但看起来你在处理端点 0 时必须做一些特殊的事情。来自 UsbRequest 的 javadocs :

Requests on endpoint zero are not supported by this class; use controlTransfer(int, int, int, int, byte[], int, int) for endpoint zero requests instead.

关于java - Android异步USB读取到ByteBuffer,但无法确定大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6350670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com