[英]Read sensor data from InputStream
在我的應用程序中,我通過藍牙接收傳感器數據,我想以一種有效的方式讀取它。 數據流如下所示:
04 64 E2 FF 49
04 64 E3 FF 4A
04 64 E1 FF 48
...
...
因此,在這種情況下04
是新數據幀的開始。 ( 04
表示即將到來的字節數)
我使用InputStream對象讀取數據流。 如何將流讀入緩沖區以對字節進行解碼? 問題是不能保證read(buffer,offset,length)
讀取字節的length
。 有時,它比length
。 我猜測逐字節讀取數據效率低下。 從輸入流中讀取解碼數據的常用方法是什么?
親切的問候
一種常見的方法是創建一個小的實用程序方法,以確保它讀取您要求讀取的字節數:
public static void readFully(InputStream in, byte[] buffer, int offset, int length) throws IOException {
int total = 0;
while (total < length) {
int r = in.read(buffer, offset + total, length - total);
if (r < 0)
throw new EOFException();
total += r;
}
}
您可能可以在apache-commons-io庫中找到類似的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.