2014-10-06 74 views
2

我們目前正在使用藍牙LE並希望發送一個128字符的字符串到gatt服務。藍牙LE最大傳輸尺寸

現在藍牙規範說BLE的最大數據包大小是22字節,我的字符串永遠不會適合數據包。

我們正在考慮分塊並將其發送到迭代中。

這是通常的做事方式嗎?

+1

什麼是你的平臺?例如,在iOS中,數據包可能會被分割成多個部分(iOS是單獨執行的,因爲如果是高級別,則會給出框架)。 – Larme 2014-10-06 10:39:45

+0

我們正在爲Android和iOS進行交叉開發。我們在實現這種功能方面沒有任何問題,但我們想知道在藍牙領域有什麼樣的方法。 – barry007 2014-10-06 10:54:50

回答

3

是的,你需要將數據塊分成18個字節段,然後發送一系列Prepare Write Request到服務器。每個申請的有3個參數:

  • 屬性手柄(2個字節)
  • 屬性偏移(2個字節)
  • 數據部分(最大18個字節)

所以,你會先發一個偏移量爲0的數據包,然後是一個偏移量爲18,然後是36等的數據包。 當你這樣做的時候,服務器會排隊你的所有請求。

最後,您發送一個Execute Write Request,服務器將一次寫入所有字節。