通过BLE传输大数据块的最佳方法

时间:2016-12-27 20:37:43

标签: bluetooth-lowenergy core-bluetooth android-bluetooth

我是BLE的新手,希望您能指出我正确的实施方法。

我正在开发一种应用程序,其中外围设备(电池供电)设备连续聚合传感器读数。 在移动端应用程序中将有一个" sync"按钮,按下按钮,我想将外围设备中累积的所有传感器读数传输到移动应用程序。 同步之间的最长持续时间可以是几天,因此,累积的数据可以达到20K字节的大小。

现在,我想知道从外围设备到中央应用程序执行数据传输的最佳方法是什么。 我想创建一系列特征,其中每个特征将包含固定数量的样本(例如代表1小时的读数)。

然后,在同步时,我会:

  1. 读取特征计数(1小时单元数)。
  2. 然后逐个阅读特征(1小时细胞)。
  3. 但是,我不知道这是否是一种有效的方法?

    1. 我不确定这是否是最节能的电源"我可以的方式 使用。
    2. 我不确定特征性阅读是否可行,或者可能 我需要使用指示。
    3. 任何帮助都将受到高度赞赏:)

      先谢谢,Moti。

1 个答案:

答案 0 :(得分:6)

我只会使用通知。

使用您编写内容的一个特征来触发传输开始。

然后有另一个特性,你可以通过一次发送20个字节来简单地传输数据。 BLE片上系统的大多数SDK都有一些控制数据流的方法,因此您不会发送太快的数据。通常是在准备好接收下一个通知时触发回调。

为了知道正在发送的数据的大小,您可以让第一个通知包含大小,其余的包含数据。

这是最节省时间和功效的方法,因为每个连接间隔可以发送许多通知,相比之下,如果你进行大量的读取,通常需要每次往返两次。不要使用指示,因为它们每个指示基本上也需要两次往返。无论如何,它们也毫无用处。

通过交换更大的MTU(导致更低的L2CAP / ATT标头开销),您可以将速度提高几个百分点。