Я читаю байты с USB-устройства на основе FTDI в ОС Android 3.1 (на Motorola Xoom), используя недавно добавленный USB API для Android: 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, но при чтении метка не устанавливается.Есть ли способ точно определить, сколько байтов читается?
Спасибо