Java Android异步USB读取ByteBuffer,但无法确定大小

Java Android异步USB读取ByteBuffer,但无法确定大小,java,android,asynchronous,usb,bytebuffer,Java,Android,Asynchronous,Usb,Bytebuffer,我正在使用最近添加的Android USB API从Android 3.1操作系统(摩托罗拉Xoom)上基于FTDI的USB设备读取字节: 但是,我在执行异步读取时遇到了一个问题 ByteBuffer bb = ByteBuffer.allocate(128); UsbRequest request = new UsbRequest(); request.initialize(deviceConnection, deviceInterface.ge

我正在使用最近添加的Android USB API从Android 3.1操作系统(摩托罗拉Xoom)上基于FTDI的USB设备读取字节:

但是,我在执行异步读取时遇到了一个问题

        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时,您似乎必须做一些特殊的事情。从以下的javadocs:

此类不支持端点0上的请求;改为用于端点零请求


我不确定这是您的问题,但在处理端点0时,您似乎必须做一些特殊的事情。从以下的javadocs:

此类不支持端点0上的请求;改为用于端点零请求


显然你不能。Android USB支持的一个缺点:(


请参见

显然您不能。安卓USB支持的一个缺点:(


参见

NOPE,GETEndoPoT(0)实际上返回了我们通常考虑的端点1。它跳过控制端点。端点是零均值类型的端点,还是端点索引?您能解释一下吗?NOPE,GETEndoPoT(0)。实际上返回的是我们通常考虑的端点1。它跳过控制端点。端点是零均值类型的端点,还是端点索引?你能解释一下吗?