linux – Bluez自动重新连接设备
发布时间:2020-12-14 02:14:19 所属栏目:Linux 来源:网络整理
导读:我正在用C/C++编写一个用于蓝牙低功耗设备的库.到目前为止,我一直在使用Bluez公开的D-Bus接口,并能够发现,连接并与设备通信. 但是,当设备由于链路故障或超出范围而断开连接时,重新连接到它并非易事.理想情况下,我希望能够创建到所有断开连接的设备的挂起连接
我正在用C/C++编写一个用于蓝牙低功耗设备的库.到目前为止,我一直在使用Bluez公开的D-Bus接口,并能够发现,连接并与设备通信.
但是,当设备由于链路故障或超出范围而断开连接时,重新连接到它并非易事.理想情况下,我希望能够创建到所有断开连接的设备的挂起连接,但Bluez似乎不支持这一点.似乎Bluez只支持一个同时连接呼叫,在15-20秒后超时. 因此,解决方案是监听广告包,并在检测到已知设备时进行连接. #bluez上的优秀人员告诉我,这已经实现了,实现它的方法是使用GattManager1 RegisterProfile方法注册实现GattProfile1的对象.尝试此操作没有结果,设备在链接失败后保持断开连接.它的记录也很差,所以我很有可能错过了一些东西. 我的问题是:这是正确的解决方案吗?它会提供无缝和快速的重新连接吗?如果是的话,会出现什么问题? 解决方法
如果要重新连接到单个蓝牙设备,可以通过接收org.freedesktop.DBus.Properties.PropertiesChanged监视连接状态,并在必要时调用org.bluez.Device1.Connect重新连接.由于这会超时,你可以将Connect()放在一个循环中,只有在org.bluez.Device1.Connected属性为true时才会退出.
原作者是否通过实施GattProfile1设法为多个设备做到了这一点? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |