簡體   English   中英

當我的數據包含 0x0a 和 0x0d 時,如何從 android 中的 BLE 讀取全長數據?

[英]How to read full length of data from BLE in android when my data contain 0x0a and 0x0d?

我能夠正確連接到設備並且它可以正確接收特征而沒有任何錯誤。 但是當接收到的數據包含 0x0a 和 0x0d 時就會出錯。

例如,設備將數據作為0b710a6000179c21346fb23feec651bc發送到移動應用程序。 該應用程序將收到如下消息。 該應用程序將數據拆分為 2 個數據。

D/BluetoothLeService:接收數據 = 0B71

D/BluetoothLeService:接收數據 = 6000179C21346FB23FEEC651BC

這是來自 function廣播更新的日志消息

private void broadcastUpdate(final String action,
                             final BluetoothGattCharacteristic characteristic) {
    final Intent intent = new Intent(action);

    if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
        ...
    } else {
        // For all other profiles, writes the data formatted in HEX.
        final byte[] data = characteristic.getValue();
        if (data != null && data.length > 0) {
            String hexData=DeviceControlActivity.bytesToHex(data);
            Log.d(TAG, "Receive Data = "+hexData);
            intent.putExtra(EXTRA_DATA, data);
        }
    }
    sendBroadcast(intent);
}

我嘗試使用 nRF Connect 應用程序來測試 BLE 寫入/讀取,但它也得到了與上面相同的 output。 然后我發現 0x0A 是換行符\n而 0x0D 是返回字符\r

當它包含0x0A0x0D時,有什么方法可以接收全長數據? 所以應用程序可以接收完整的數據0B710A6000179C21346FB23FEEC651BC 請指教。 謝謝

BLE 堆棧根本不分析數據。

必須是在遠程設備上運行的應用程序在發送之前將數據分成兩部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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