1 回答
TA贡献1845条经验 获得超8个赞
如果您想编写仅打印您获得的字节的代码,我会尝试以下操作:
if (uartDevice != null) {
// Loop until there is no more data in the RX buffer.
try {
byte[] buffer = new byte[CHUNK_SIZE];
int read;
while ((read = uartDevice.read(buffer, buffer.length)) > 0) {
for (int i = 0; i < read; i++) {
System.out.printf("%02x", buffer[i]);
}
}
} catch (IOException e) {
Log.w(TAG, "Unable to transfer data over UART", e);
}
System.out.println(); // Adds a newline after all bytes
}
以下是一个方法,该方法采用 aUartDevice作为参数,从它读取直到结束并返回byte包含全部内容的单个数组。不需要保证保存全部内容的任意缓冲区。返回的数组与它需要的大小完全一样。仅使用较小的读取缓冲区来提高性能。错误处理被忽略。
这假设数据不大于内存所能容纳的大小。
byte[] readFromDevice(UartDevice uartDevice) {
byte[] buffer = new byte[CHUNK_SIZE];
int read;
ByteArrayOutputStream data = new ByteArrayOutputStream();
while ((read = uartDevice.read(buffer, buffer.length)) > 0) {
data.write(buffer, 0, read);
}
return data.toByteArray();
}
当所有数据都被读取后,该方法返回,您可以随意处理返回的数组。
添加回答
举报