Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Qt'的两个实例;s`QLowEnergyController`连接到两个可扩展设备 问题_C++_Qt_Bluetooth Lowenergy_Qt5_Bluez - Fatal编程技术网

C++ 使用Qt'的两个实例;s`QLowEnergyController`连接到两个可扩展设备 问题

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

我想使用Qt连接到两个BLE设备

系统
  • 操作系统: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
  • 我正在考虑使用第二个适配器,QBluetooth只能使用一个适配器(默认适配器)对吗
  • 有人能想出解决办法吗
  • 现在已经修复了(Qt5.11,Bluez5.50,Raspian,用RPI4测试)。我可以轻松创建两个
    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似乎将扮演核心角色。我们应该注意这一点。