蓝牙低功耗(BLE)数据传输中的恒定延迟。

3

我正在评估不同的无线接口对我们在2个树莓派4上的项目的适用性,目前正在评估低功耗蓝牙。因此,我已经使用Qt框架(5.15)编写了一个中心和外围设备应用程序。在我的情况下,由于安全方面的考虑,消息之间的延迟时间很重要。每个命令的消息大小约为80-100字节。在我的一个测试中,我每80毫秒发送一次80字节的命令。理想情况下,另一个设备应该在80毫秒间隔内接收到消息。对于LAN(TCP)接口,此测试效果良好。

对于低功耗蓝牙,我发现从外围到中心发送的消息效果相当不错,并且我没有测量到任何大的延迟。但是在中心到外围方向上,我确实在100ms至150ms的时间间隔内准确地接收到了消息。看起来这背后不可能有很大的魔力,那么有没有合理的解释呢?我也使用Python脚本进行了测试,观察到了同样的结果。因此,Qt的实现似乎不应该是问题所在。

在研究过程中,我发现连接间隔可能会影响这一点,但在Qt中,QLowEnergyConnectionParameterRequest(QLowEnergyConnectionParameters Class | Qt Bluetooth 5.15.4)对我无效。是否有任何命令可以在Linux命令行上为测试目的设置连接间隔?

此致
BenFR

1个回答

4
可能是因为使用了WRITE而不是WRITE WITHOUT RESPONSE,导致您的代码从中央到外围的速度变慢。它们之间的区别在于WRITE等待确认,从而减缓了通信速度,而WRITE WITHOUT RESPONSE非常类似于通知/指示器的工作方式,在ATT层没有ACK。您可以通过更改应用程序的写入模式并确保外围特征支持WriteNoResponse来更改此设置。
关于更改连接间隔,需要远程端接受更改才能生效。换句话说,如果您正在从外围请求连接参数更改,则中央需要有代码接收此连接参数更改请求并接受它。
请查看以下链接以获取更多信息:-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接