我是 BLE 的新手,希望您能够指出我正确的实施方法。
我正在开发一个应用程序,其中外围(电池供电)设备不断聚合传感器读数。
在移动端应用程序上会有一个“同步”按钮,按下按钮后,我想将外围设备中积累的所有传感器读数传输到移动应用程序。
同步之间的最长持续时间可以是几天,因此,累积的数据可以达到 20Kbytes 的大小。
现在,我想知道执行从外围设备到中央应用程序的数据传输的最佳方法是什么。
我考虑过创建一系列特征,其中每个特征将包含固定数量的样本(例如代表 1 小时的读数)。
然后,同步后,我将:
- 读取特征计数(1 小时电池数量)。
- 然后一一读取特征(1小时电池)。
但是,我不知道这是否是一种有效的方法?
- 我不确定这是否是我能做到的最“节能”的方式
使用。
- 我不确定特征阅读是否是正确的选择,或者也许
我需要使用指示来代替。
此处的任何帮助将不胜感激:)
预先感谢,莫蒂。
我只会使用通知。
使用您写入内容的一项特征来触发传输开始。
然后还有另一个特性,您只需一次发送 20 个字节即可流式传输数据。大多数 BLE 片上系统 SDK 都有某种方法来控制数据流,因此您不会发送得太快。通常是在准备好接受下一个通知时触发回调。
为了了解正在发送的数据的大小,您可以让第一个通知包含大小,其余的通知包含数据。
这是最省时间和最省电的方式,因为每个连接间隔可以发送许多通知,而如果您进行大量读取,则通常每次需要两次往返。不要使用指示,因为每个指示基本上也需要两次往返。无论如何,它们也毫无用处。
您还可以通过交换更大的 MTU(这会降低 L2CAP/ATT 标头开销)来将速度提高一定百分比。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)