簡體   English   中英

藍牙Android RFCOMM / SPP錯誤處理建議

[英]Bluetooth Android RFCOMM / SPP error handling suggestions

我正計划在Android設備和使用商用藍牙模塊的自定義傳感器之間使用通信協議。 我會使用SPP配置文件,據說“向用戶提供簡單可靠的數據流,類似於TCP”。

我對藍牙技術不太熟悉,對設計這樣的協議有一些疑問。

首先,我不清楚是否必須擔心傳輸的數據是否被傳輸。 底層協議棧是否保證我從InputStream Android讀取的字節與UART在傳感器端接收的字節相同? 我是否必須定義我自己的受CRC或東西保護的數據包,或者它是否過度殺傷?

從Android藍牙文檔中我不清楚如果信號很弱並且丟失了一段時間,我的應用程序會發生什么。 我是否立即獲得IOException ,或者平台為我提供了一些隱藏的錯誤處理和恢復,這會使我看不到這么短暫的中斷?

謝謝你的建議。

您不必擔心SPP上的數據損壞,藍牙提供2級CRC,一個在基帶,然后一個在L2CAP級別,兩者都有任何檢測到的損壞的重傳機制 - 因此應用程序將只接收好的數據包。

關於第二個問題 - 如果基礎藍牙連接斷開連接,您連接的Socket流將收到IOExceptions,Android無法處理自動恢復 - 通常應用程序需要檢測斷開連接的原因並嘗試重新連接(如果適用)。 因此,如果您希望從上次成功接收/發送的點開始繼續數據交換,那么您的應用程序應保留某種序列號和輕量協議以實現恢復。 另一種選擇是從重新連接時的數據交換開始(這取決於你的用例)

暫無
暫無

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

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