参考QGroundControl开发指南
设计理念
QGC用户界面是用QML实现的。
构建
可以按照这一篇来在Windows中下载源码并且编译。QGroungControl在QT中源码编译(包括配置环境)
通信流程
src/comm/LinkManager.cc
- LinkManager始终打开UDP端口,等待车辆心跳
- LinkManager检测到一种新的已知设备类型(Pixhawk,SiK Radio,PX4 Flow),该类型与计算机建立UDP连接。LinkManager在计算机和设备之间创建新的串行连接。
src/comm/MAVLinkProtocol.cc
- 从Link传入的bytes将发送到MAVLinkProtocol
- MAVLinkProtocol将字节转换为MAVLINK消息
- 如果_multiVehicleManager收到心跳包,将根据信息创建新的对象
src/FactSystem/ParameterManager.cc
- 车辆对象实例化与车辆匹配的插件。与车辆对象关联的ParameterLoader向连接的设备发送PARAM_REQUEST_LIST,以使用参数协议加载参数。
src/MissionManager/MissionManager.cc
- 参数加载完成之后,MissionManager联系到车辆对象,使用任务协议从连接的设备请求mission items
src/VehicleSetUp/VehicleComponent.cc
- 参数加载完成后,VehicleComponent将在“SetUp”视图中显示其 UI