【无标题】

它能确保通信逻辑在后台永久运行,且能被 QGC 的任何组件通过单例访问。

为什么要用 QGCTool?随程序启动有什么好处?

在 QGC 的架构中,QGCTool 是一种特殊的单例模式。虽然不是必须 (你当然可以像之前说的那样在 QML 里直接 PayloadManager { ... }),但做成 QGCTool 有以下显著优势:

好处 A:生命周期管理(最重要的一点)
  • 普通 QML 实例化 :如果你在 MissionView.qml 里定义了 PayloadManager,当你切换到 SetupView 或者 AnalyzeView 时,这个 QML 对象可能会被销毁。对象一销毁,你的 TCP 连接就断了!

  • QGCTool 模式:它随 QGC 启动而创建,直到 QGC 完全退出才销毁。无论你在界面上怎么切来切去,后台连接始终稳定,1s 一次的数据解析永远在运行。

好处 B:全局"随处可见"
  • 你可以直接在任何一个 QML 文件里写 QGroundControl.payloadManager.radarHeight,不需要在每个页面都写一遍 import 和实例化代码。
好处 C:符合 QGC 的插件化设计
  • QGC 的核心开发者(Dronecode 团队)设计 QGCToolbox 就是为了让各种硬件扩展(如视频流、ADSB、测距仪)解耦。

如何快速改造成 QGCTool

第一步:修改 PayloadManager.h

第二步:在 QGCToolbox.h 注册 找到 QGCToolbox.h,添加:

第三步:在 QGCToolbox.cc 初始化 找到 QGCToolbox::QGCToolbox 构造函数:

总结:为什么要这样做?

  1. 稳定性:哪怕你从"飞行界面"切到了"设置界面",TCP 连接依然在后台运行,1s 一次的数据依然在被解析。如果你在 QML 里实例化,一切换页面连接就断了。

  2. 高性能QGCTool 由 C++ 管理,处理高频二进制数据(网口数据流)比在 QML 里处理快得多,不会造成 UI 卡顿。

  3. 单例模式 :整个 QGC 只有一个 PayloadManager。无论你在界面的哪个角落操作钩子,状态都是同步的。

相关推荐
清月阁21 天前
APM 小型纸飞机(开源) 组装手册
开源·飞控·航空·航模
CS_Zero2 个月前
无人机板载计算机树莓派等各种派设置飞控数传
无人机·飞控
云卓SKYDROID2 个月前
解析云卓科技C11吊舱的工业级三轴增稳结构
人工智能·科技·无人机·飞控·技术·高科技
云卓SKYDROID2 个月前
无人机数据传输速率模块解析
无人机·飞控·高科技·云卓科技·速率模块
云卓SKYDROID2 个月前
无人机滑模控制模块详解
无人机·飞控·滑块·高科技·云卓科技
云卓SKYDROID2 个月前
飞控电机电子调速技术详解
人工智能·无人机·飞控·高科技·云卓科技
云卓SKYDROID2 个月前
无人机电调模块选型指南
无人机·飞控·高科技·云卓科技
云卓SKYDROID3 个月前
无人机降噪技术及应用分析
人工智能·无人机·飞控·高科技·云卓科技
无人装备硬件开发爱好者3 个月前
ROS2:无人机从 “能飞” 到 “会思考” 的全栈技术引擎 —— 深度拆解与落地指南(下)
无人机·飞控·ros2应用