繁体   English   中英

iOS BLE连接不稳定

[英]iOS BLE unstable connection

我目前正在开发一个与设备结合的本机应用程序。 设备和应用程序通过 BLE 进行通信。 到目前为止,一切都按预期工作,但我遇到了 iOS 应用程序和设备的连接稳定性问题。 会发生的情况是设备会连接并且我可以更新一些特性,但它会定期与CBErrorDomain 7断开连接,或者写入响应会超时。 应用程序或设备端的实现似乎不是问题,因为 Android 工作稳定,并且设备在与 LightBlue 应用程序连接时也会断开连接。

我已经按照此处的建议更新了 BLE 连接参数: https://developer.apple.com/library/archive/qa/qa1931/_index.html 这增加了稳定性,但没有完全解决问题。 我试过玩弄这些价值观,但到目前为止没有运气。

我们当前使用的参数集是:

conn_min_interval: 15
conn_max_interval: 15
conn_latency: 0
supervision_timeout: 2000
adv_min_interval: 1285
adv_max_interval: 1285

我现在的问题是,是否有人知道我可以检查哪些其他内容或调整哪个参数?

您是否正在检查maximumWriteValueLength并确保您的写入小于此值? 问题的一个可能原因是设备不堪重负,无法跟上发送 ACK 的步伐。 您的设备支持什么版本的蓝牙,它是否实现了 DLE(数据长度扩展)?

你的conn_min_intervalconn_max_interval是可疑的。 毫无余地地要求 15 毫秒很可能会协商到 30 毫秒。 (请参阅41.6 连接参数)您的设备是否愿意重新协商为 15 毫秒以外的其他内容? 您的设备是否真的可以跟上 15 毫秒并且没有连接延迟? 我打赌它不能。 尝试将你的连接间隔设置为 30 毫秒(甚至更慢一点),你甚至可以尝试将你的连接延迟设置为 1 以使连接更宽容一点(尽管我更关注减慢 CI 而不是增加延迟;增加在这种情况下,延迟更像是一种黑客攻击)。

我所有的怀疑都围绕着你的外围设备没有跟上它的连接。 如果您有任何响应数据的同步活动,您需要确保它不会阻止您的 BLE 堆栈发送所需的响应。

最后,我找到了问题的答案。 问题是BLE服务器的配对过程有问题,导致iOS无法稳定连接。 现在这个问题已经修复,连接非常稳定。

我仍然不确定为什么 iOS 能够在没有配对的情况下进行任何通信,但我希望这对将来的某些人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM