簡體   English   中英

從InputStream讀取傳感器數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM