gpt4 book ai didi

linux - Bluez 自动重新连接设备

转载 作者:IT王子 更新时间:2023-10-29 00:37:50 26 4
gpt4 key购买 nike

我正在用 C/C++ 为低功耗蓝牙设备编写一个库。到目前为止,我一直在使用 Bluez 公开的 D-Bus 接口(interface),并且能够发现、连接设备并与之通信。

但是,当设备由于链接故障或超出范围而断开连接时,重新连接到它并不是一件容易的事。理想情况下,我希望能够为所有断开连接的设备创建挂起的连接,但 Bluez 似乎不支持这一点。 Bluez 似乎只支持一个并发连接调用,它会在 15-20 秒后超时。

因此,一种解决方案是监听广告包,并在检测到已知设备时连接。 #bluez 上的好心人告诉我这已经实现了,实现方法是用 GattManager1 RegisterProfile 方法注册一个实现了 GattProfile1 的对象。尝试此操作没有结果,设备在链接失败后保持断开状态。它的文档也非常少,所以我很有可能遗漏了一些东西。

我的问题是:这是正确的解决方案吗?它会提供无缝且快速的重新连接吗?如果是,那有什么问题吗?

最佳答案

如果您希望重新连接到单个蓝牙设备,您可以通过接收 org.freedesktop.DBus.Properties.PropertiesChanged 并调用 org.bluez.Device1 来监控连接状态。 Connect 以在必要时重新连接。由于这会超时,您可以将 Connect() 放入一个循环中,只有当 org.bluez.Device1.Connected 属性为真时,您才会退出该循环。

原作者是否已经通过实现 GattProfile1 为多个设备做到了这一点?

关于linux - Bluez 自动重新连接设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com