何呵呵0-0 2025-05-24 11:51 采纳率: 0%
浏览 25

设备端确实是收到并开启了notify enable。我也成功用service->writeCharacteristic()这个函数写入了数据并且设备执行了操作。但是就是没有触发

经过实验发现设备端确实是收到并开启了notify enable。我也成功用service->writeCharacteristic()这个函数写入了数据并且设备执行了操作。但是就是没有触发connect(service, &QLowEnergyService::characteristicChanged,this, &BleConnect::ble_dev_tool_service_characteristic_changed_slot)这个槽函数。貌似就像是一直都没有收到characteristicChanged信号。但是经过设备端打印日志输出确实是回复了信息。

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-05-24 11:51
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你使用 Qt 开发了一个蓝牙应用程序,已经成功地写入了数据到设备端,并且设备端执行了相应的操作,但是却没有触发 notify 事件。

    可能的原因是:

    1. 设备端的 notify 事件可能需要在写入数据后执行一定的延迟时间,或者需要在写入数据后执行一些其他操作。
    2. Qt 中的 notify 事件可能需要在写入数据后手动触发,例如使用 service->notify() 函数。

    建议:

    1. 在写入数据后添加延迟时间,例如使用 QTimer 对象,延迟 100ms 后再触发 notify 事件。
    2. 使用 service->notify() 函数手动触发 notify 事件。

    代码示例:

    QTimer::singleShot(100, this, [this]() {
        service->notify();
    });
    

    如果以上方法仍然不行,可以提供更多的代码和日志信息,以便更好地 debug。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月24日