微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

低功耗蓝牙 (BLE) 数据传输中的持续延迟

如何解决低功耗蓝牙 (BLE) 数据传输中的持续延迟

我正在尝试为我们在 2xRaspBerry Pi 4 上的项目评估一些不同无线接口的适用性,目前我正在评估低功耗蓝牙。因此,我使用 Qt 框架 (5.15) 编写了一个中央和外围设备应用程序。就我而言,由于某些安全方面的原因,消息之间的延迟时间很重要。每个命令的消息大小约为 80-100 字节。在我的一项测试中,我每 80 毫秒发送 80 字节命令。理想情况下,另一台设备也应以 80 毫秒的间隔接收消息。对于 LAN (TCP) 接口,此测试运行良好。

对于低功耗蓝牙,我观察到从外设发送到中央的消息工作得很好,我测得没有大的延迟。我从中央到外围方向得到了不同的结果。在这里,我确实以 100 毫秒到 150 毫秒的间隔收到了消息。看来这背后不可能有很大的魔力,有什么合理的解释吗?我也用 Python 脚本对其进行了测试,并且观察到了相同的结果。所以看起来Qt实现应该不是问题。

在研究过程中我发现,连接间隔可能会影响这一点,但在 Qt 中,QlowEnergyConnectionParameterRequest(QlowEnergyConnectionParameters Class | Qt Bluetooth 5.15.4)对我不起作用。是否有任何命令,我可以在 Linux 上的命令行中设置连接间隔以进行测试?

亲切的问候,
本FR

解决方法

您的代码从中央到外围的速度可能较慢,因为使用了 WRITE 而不是 WRITE WITHOUT RESPONSE。不同之处在于 WRITE 等待确认,因此会减慢通信速度,而 WRITE WITHOUT RESPONSE 与通知/指示的工作方式非常相似,因为 ATT 层没有 ACK。您可以通过更改应用程序的 write mode 并确保外围设备的特性支持 WriteNoResponse 来更改此设置。

关于更改连接间隔,需要从远程端接受更改才能生效。换句话说,如果你是从外设请求改变连接参数,那么中心需要有代码来接收这个连接参数改变请求并接受它。

查看以下链接了解更多信息:-

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。