C++ 使用Qt'的两个实例;s`QLowEnergyController`连接到两个可扩展设备 问题
我想使用Qt连接到两个BLE设备 系统C++ 使用Qt'的两个实例;s`QLowEnergyController`连接到两个可扩展设备 问题,c++,qt,bluetooth-lowenergy,qt5,bluez,C++,Qt,Bluetooth Lowenergy,Qt5,Bluez,我想使用Qt连接到两个BLE设备 系统 操作系统:Arch Linux 4.13.8 bluez版本:5.47 BLE适配器:剑桥硅无线电有限公司蓝牙加密狗(HCI模式) 解决方案 我有两个这样的例子: controller0 = QLowEnergyController::createCentral(qBluetoothDeviceInfoBLE0, this)); controller1 = QLowEnergyController::createCentral(qBluetoothDe
- 操作系统:Arch Linux 4.13.8
- bluez版本:5.47
- BLE适配器:剑桥硅无线电有限公司蓝牙加密狗(HCI模式)
controller0 = QLowEnergyController::createCentral(qBluetoothDeviceInfoBLE0, this));
controller1 = QLowEnergyController::createCentral(qBluetoothDeviceInfoBLE1, this));
如果随后成功连接到BLE0
,并且在发出信号connected()
后,我启动到BLE1
的连接。与BLE0的连接将被中止:
qt.bluetooth.bluez: Cannot connect due to pending active LE connections
qt.bluetooth.bluez: void QBluetoothSocketPrivate::_q_readNotify() 17 error: -1 "Software caused connection abort"
。。。并且将成功建立到BLE1
的连接
建立
我在以下内容中找到了这一描述:
值得一提的是,一些平台,例如基于BlueZ的
Linux无法维护QLowEnergyController的两个连接实例
到同一个远程设备
注意:BLE0
和BLE1
是不同的远程设备
我还可以确认连接到相同的设备与我的bluez版本一起工作。当使用nodejs的包noble时,它也可以工作
问题
BLE0
,然后再连接到BLE1
)QLowEnergyController
实例
但是,一次只能有一个QBluetoothDeviceDiscoveryAgent
处于活动状态。这意味着必须首先发现所有设备,然后通过为每个外围设备创建一个单独的QLowEnergyController
对象来连接这些设备
下面是一个很好的简短示例它似乎是Qt的BLE实现中的一个bug。BlueZ可以处理到多个设备的连接。
BlueZ
和多个连接中存在一些错误,但我的版本显然可以处理多个连接,是的。我试图找出这是否是错误行为,并将向您报告。我在Ubuntu17.10,Qt5.10上也有同样的问题。“马库斯,你的问题解决了吗?”迪尼斯罗戈夫琴科遗憾地说,没有解决,仍然在思考中progress@Marcus我在Ubuntu 17.10和Qt5.10上也有同样的问题。显然,Qt还不支持bluez dbus API,该API是在同一设备上维护多个连接所必需的,根据以下评论:在此跟踪其发展:Qt 5.11似乎将扮演核心角色。我们应该注意这一点。