通过 BLE 传输大数据块的最佳方法
Best approach for transfering large data chunks over BLE
我是 BLE 的新手,希望您能为我指出正确的实施方法。
我正在开发一个应用程序,其中外围(电池供电)设备不断汇总传感器读数。
在移动端应用程序上会有一个 "sync" 按钮,按下按钮后,我想将外围设备中累积的所有传感器读数传输到移动应用程序。
同步之间的最大持续时间可以是几天,因此,累积的数据可以达到 20Kbytes 的大小。
现在,我想知道执行从外围应用程序到中央应用程序的数据传输的最佳方法是什么。
我考虑创建一个特征数组,其中每个特征将包含固定数量的样本(例如代表 1 小时的读数)。
然后,在同步后,我将:
- 读取特征计数(多少个 1 小时电池)。
- 然后一一读取特征(1小时电池)
但是,我不知道这是否是一种有效的方法?
- 我不确定这是否是我能做到的最 "power efficient" 方式
采用。
- 我不确定 Characteristic READ 是否可行,或者也许
我需要改用指示。
我们将不胜感激 :)
提前致谢,Moti。
我只会使用通知。
使用您写入内容的一个特征来触发传输开始。
然后还有另一个特点,您可以通过一次发送 20 个字节来简单地流式传输数据。大多数 BLE SDK system-on-a-chips 都有一些方法来控制数据流,因此您不会发送得太快。通常是在准备好接受下一个通知时触发回调。
为了知道正在发送的数据的大小,您可以让第一个通知包含大小,其余的包含数据。
这是最省时省电的方式,因为每个连接间隔可以发送许多通知,相比之下,如果您进行大量读取,而通常每次读取需要两次往返。不要使用指示,因为每个指示基本上还需要两次往返。反正也没什么用。
您也可以通过交换更大的 MTU(这会降低 L2CAP/ATT headers 开销)将速度提高一些百分比。
我是 BLE 的新手,希望您能为我指出正确的实施方法。
我正在开发一个应用程序,其中外围(电池供电)设备不断汇总传感器读数。 在移动端应用程序上会有一个 "sync" 按钮,按下按钮后,我想将外围设备中累积的所有传感器读数传输到移动应用程序。 同步之间的最大持续时间可以是几天,因此,累积的数据可以达到 20Kbytes 的大小。
现在,我想知道执行从外围应用程序到中央应用程序的数据传输的最佳方法是什么。 我考虑创建一个特征数组,其中每个特征将包含固定数量的样本(例如代表 1 小时的读数)。
然后,在同步后,我将:
- 读取特征计数(多少个 1 小时电池)。
- 然后一一读取特征(1小时电池)
但是,我不知道这是否是一种有效的方法?
- 我不确定这是否是我能做到的最 "power efficient" 方式 采用。
- 我不确定 Characteristic READ 是否可行,或者也许 我需要改用指示。
我们将不胜感激 :)
提前致谢,Moti。
我只会使用通知。
使用您写入内容的一个特征来触发传输开始。
然后还有另一个特点,您可以通过一次发送 20 个字节来简单地流式传输数据。大多数 BLE SDK system-on-a-chips 都有一些方法来控制数据流,因此您不会发送得太快。通常是在准备好接受下一个通知时触发回调。
为了知道正在发送的数据的大小,您可以让第一个通知包含大小,其余的包含数据。
这是最省时省电的方式,因为每个连接间隔可以发送许多通知,相比之下,如果您进行大量读取,而通常每次读取需要两次往返。不要使用指示,因为每个指示基本上还需要两次往返。反正也没什么用。
您也可以通过交换更大的 MTU(这会降低 L2CAP/ATT headers 开销)将速度提高一些百分比。