【问题标题】:Bluez auto reconnect devicesBluez 自动重新连接设备
【发布时间】:2015-11-24 03:43:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: linux bluetooth bluetooth-lowenergy dbus bluez


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 2020-09-27
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-05-08
      相关资源
      最近更新 更多