I'm having a strange issue when using readBytes() to read just a single byte. When I send 7 bytes from a PC to an Android device, and try to read them using something like this, it works fine:
byte[] data = new byte[7];
int k = 0;
while(k != 7) {
int len = readBytes(data, 0);
if(len > 0) k += len;
}
But when I send 7 bytes from a PC to an Android device and I use a buffer that is only a single byte, it doesn't work. This is the code:
byte[] data = new byte[1];
int k = 0;
while(k != 7) {
int len = readBytes(data, 0);
if(len > 0) k += len;
}
The code above will loop forever because k will never be more than 0.
I've debugged it and found out that bulkTransfer always returns -1 so I suspect it does so because the buffer is too small (just 1 byte) for bulkTransfer to copy all data it has. Could this be the reason?
If it is, shouldn't UsbSerial be fixed to work around this so that readBytes can be used with arbitrary buffer sizes? E.g. readBytes could call syncRead in buffers of 8kb or so internally so that bulkTransfer will never fail because of a buffer being too small...
I'm having a strange issue when using
readBytes()
to read just a single byte. When I send 7 bytes from a PC to an Android device, and try to read them using something like this, it works fine:But when I send 7 bytes from a PC to an Android device and I use a buffer that is only a single byte, it doesn't work. This is the code:
The code above will loop forever because
k
will never be more than 0.I've debugged it and found out that
bulkTransfer
always returns -1 so I suspect it does so because the buffer is too small (just 1 byte) forbulkTransfer
to copy all data it has. Could this be the reason?If it is, shouldn't UsbSerial be fixed to work around this so that
readBytes
can be used with arbitrary buffer sizes? E.g.readBytes
could callsyncRead
in buffers of 8kb or so internally so thatbulkTransfer
will never fail because of a buffer being too small...Any ideas/thoughts on this?