我想使用Qt的Bluetooth Low Energy来连接两个BLE设备。
我使用了两个QLowEnergyControllers个实例,如下所示:
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
的连接。
我在QLowEnergyControllers中找到了这个描述:
重要的是要提到一些平台,例如基于BlueZ的平台 Linux无法维护QLowEnergyController的两个连接实例 到同一个远程设备
注意:BLE0
和BLE1
是不同的远程设备。
我还可以确认连接到相同的设备适用于我的bluez版本。它在使用nodejs的包贵族时也有效。
BLE0
,之后是BLE1
)?答案 0 :(得分:0)
现在已修复(QT 5.11,BlueZ 5.50,Raspian,已通过RPi 4测试)。我可以轻松创建两个QLowEnergyController
的实例。
但是,一次只能有一个QBluetoothDeviceDiscoveryAgent
处于活动状态。这意味着必须先发现所有设备,然后再通过为每个外围设备创建一个单独的QLowEnergyController
对象来连接它们。
这是一个很好的简短示例https://bugreports.qt.io/browse/QTBUG-73809