Android BLE,从同一设备写入和读取,没有吞吐量和时间损失
Android BLE, Writing and Reading from the same device, without loss throughput and time
我目前正在开发一个使用低功耗蓝牙与 BLE 设备通信的应用程序。问题是该项目需要高度连续的数据交换才能工作。
目前我开发了 4 个片段,它们共享相同的 BluetoothGatt 实例和相同的数据数组。当我连接到 BLE 设备时,我将连接优先级设置为高,然后我开始一个写入数据的写入循环,通常每 50 毫升只写入 4 个字节。
同时我开始阅读并更新我的界面。
我注意到如果我停止写入,我每 50 毫升就会收到一个数据包,但如果我让写入循环工作,读取时间会从 50 毫升增加到 100 或更多。
这不是一个真正的大问题,但它会降低所有系统性能。
我在互联网上寻找解决方案,但我什么也没找到,除了连接优先级已经帮了我很多,我想知道是否有人从未解决过此类问题以及他是如何做到的。谢谢
您正在使用的 BLE 设备有一个叫做 "connection interval" 的东西。它在设备的固件中设置。它的最小值是 7.5 毫秒,但通常设置为 30 毫秒或更多(iOS 即使间隔低于 20-30 毫秒也无法工作,否则它只会错过数据包)。
所以在设计 BLE 设备固件时,连接间隔设置为一些安全的值,可以与大多数移动设备一起使用,并且对节省电池也很重要。
这意味着您可以在每个连接间隔向设备传输一次或从设备传输一次,无论是读取、写入还是通知。
某些设备具有允许更改连接间隔的配置设置,但如果您只是想知道发生了什么,那就是它。
我目前正在开发一个使用低功耗蓝牙与 BLE 设备通信的应用程序。问题是该项目需要高度连续的数据交换才能工作。
目前我开发了 4 个片段,它们共享相同的 BluetoothGatt 实例和相同的数据数组。当我连接到 BLE 设备时,我将连接优先级设置为高,然后我开始一个写入数据的写入循环,通常每 50 毫升只写入 4 个字节。
同时我开始阅读并更新我的界面。 我注意到如果我停止写入,我每 50 毫升就会收到一个数据包,但如果我让写入循环工作,读取时间会从 50 毫升增加到 100 或更多。 这不是一个真正的大问题,但它会降低所有系统性能。
我在互联网上寻找解决方案,但我什么也没找到,除了连接优先级已经帮了我很多,我想知道是否有人从未解决过此类问题以及他是如何做到的。谢谢
您正在使用的 BLE 设备有一个叫做 "connection interval" 的东西。它在设备的固件中设置。它的最小值是 7.5 毫秒,但通常设置为 30 毫秒或更多(iOS 即使间隔低于 20-30 毫秒也无法工作,否则它只会错过数据包)。
所以在设计 BLE 设备固件时,连接间隔设置为一些安全的值,可以与大多数移动设备一起使用,并且对节省电池也很重要。
这意味着您可以在每个连接间隔向设备传输一次或从设备传输一次,无论是读取、写入还是通知。
某些设备具有允许更改连接间隔的配置设置,但如果您只是想知道发生了什么,那就是它。