蓝牙LE最大传输尺寸

问题描述:

我们目前正在使用蓝牙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

是的,你需要将数据块分成18个字节段,然后发送一系列Prepare Write Request到服务器。每个申请的有3个参数:

  • 属性手柄(2个字节)
  • 属性偏移(2个字节)
  • 数据部分(最大18个字节)

所以,你会先发一个偏移量为0的数据包,然后是一个偏移量为18,然后是36等的数据包。 当你这样做的时候,服务器会排队你的所有请求。

最后,您发送一个Execute Write Request,服务器将一次写入所有字节。