簡體   English   中英

使用 Android BLE,我是否需要在讀回字節數據時或僅在寫入時請求較大的 MTU?

[英]With Android BLE, do I need to request a large MTU when reading byte data back, or only when writing?

我知道在 Android 中,用於將數據寫入 Characterisitc 的 MTU 約為 23 個字節(使用了 3 個字節,因此您有大約 20 個字節可用)並且您可以請求更高的 MTU(高達 512)以允許您寫入/發送更大的數據包到藍牙設備。

但是,從特征讀取數據時是否也需要這樣做?

閱讀和通知更新?

如果說,我有一個以 123 字節塊發送數據的特性,但我最多只需要向它發送 2 個字節,我是否需要協商一個大的 MTU?

我可以推薦你閱讀藍牙核心標准中的 ATT 和 GATT 章節。 這些解釋了協議。

默認情況下,Android 不會協商比默認值(23 字節)更大的 MTU。 您可以通過調用requestMtu function 自己完成。

Android 在讀/寫值時當 MTU 不夠大時自動使用“寫入長特征值”和“讀取長特征值”以傳輸整個值。 然而,這些過程非常低效,因為它們需要多次往返。 讀取操作也不是原子的。

通知和指示沒有任何具有多次往返的“長”變體,因此這些將被截斷以適應 MTU。

暫無
暫無

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

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