经过实验发现设备端确实是收到并开启了notify enable。我也成功用service->writeCharacteristic()这个函数写入了数据并且设备执行了操作。但是就是没有触发connect(service, &QLowEnergyService::characteristicChanged,this, &BleConnect::ble_dev_tool_service_characteristic_changed_slot)这个槽函数。貌似就像是一直都没有收到characteristicChanged信号。但是经过设备端打印日志输出确实是回复了信息。
设备端确实是收到并开启了notify enable。我也成功用service->writeCharacteristic()这个函数写入了数据并且设备执行了操作。但是就是没有触发
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
阿里嘎多学长 2025-05-24 11:51关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
问题解答
你使用 Qt 开发了一个蓝牙应用程序,已经成功地写入了数据到设备端,并且设备端执行了相应的操作,但是却没有触发 notify 事件。
可能的原因是:
- 设备端的 notify 事件可能需要在写入数据后执行一定的延迟时间,或者需要在写入数据后执行一些其他操作。
- Qt 中的 notify 事件可能需要在写入数据后手动触发,例如使用
service->notify()函数。
建议:
- 在写入数据后添加延迟时间,例如使用
QTimer对象,延迟 100ms 后再触发 notify 事件。 - 使用
service->notify()函数手动触发 notify 事件。
代码示例:
QTimer::singleShot(100, this, [this]() { service->notify(); });如果以上方法仍然不行,可以提供更多的代码和日志信息,以便更好地 debug。
解决 无用评论 打赏 举报