我是BLE的新手,希望你能指出我正确的实施方法 .
我正在开发一种应用程序,其中外围设备(电池供电)设备连续聚合传感器读数 . 在移动端应用程序中将有一个“同步”按钮,按下按钮后,我想将外围设备中累积的所有传感器读数传输到移动应用程序 . 同步之间的最大持续时间可以是几天,因此,累积的数据可以达到20K字节的大小 .
现在,我想知道从外设到中央应用程序执行数据传输的最佳方法是什么 . 我考虑创建一系列特征,其中每个特征将包含固定数量的样本(例如代表1小时的读数) .
然后,在同步时,我会:
-
读取特征计数(1小时单元数) .
-
然后逐个读取特征(1小时单元格) .
但是,我不知道这是否是一种有效的方法?
-
我不确定这是否是我能使用的最好的方式 .
-
我不确定特征READ是否可行,或者我可能需要使用指示 .
这里的任何帮助将非常感谢:)
感谢Moti .
1 回答
我只想使用通知 .
使用您编写内容的一个特征来触发传输开始 .
然后有另一个特性,你可以通过一次发送20个字节来简单地传输数据 . BLE片上系统的大多数SDK都有一些控制数据流的方法,因此您不会发送太快的数据 . 通常通过在准备好接收下一个通知时触发回调 .
为了知道正在发送的数据的大小,您可以让第一个通知包含大小,其余的包含数据 .
这是最节省时间和功效的方式,因为每个连接间隔可以发送许多通知,相比之下,如果您执行大量读取而通常需要每次往返两次 . 不要使用指示,因为它们每个指示基本上也需要两次往返 . 无论如何,它们也毫无用处 .
通过交换更大的MTU(这会导致更低的L2CAP / ATT报头开销),您可以将速度提高几个百分点 .