核心功能模块
无人机控制与通信(核心业务层)
从 flightmonitor/templates/scratch/scratch.py 可知,项目通过 mavutil.mavlink_connection 与无人机建立 MAVLink 通信,实现模式切换(change_mode 函数)等控制逻辑。这部分是地面控制站与无人机交互的核心,依赖 MAVLink 协议处理指令发送、心跳检测和响应确认。
Web 交互层
flightmonitor/static/js/map.js 中的 flyTo_old 函数通过 XMLHttpRequest 向后端发送 HTTP 请求(如 /flight_data_collect/control/flyto/ 接口),说明前端通过 Web 接口与后端交互,实现地图飞控等可视化操作。结合项目名称中的“web-based”,推测前端采用 HTML/JavaScript 构建,后端基于 Django 框架(从路径中的 manage.py 等特征推测)提供 Web 服务。
2. 技术栈与依赖
后端框架:使用 Django 作为 Web 框架(隐含于项目结构中),处理 HTTP 请求、路由管理和业务逻辑。
通信协议:
MAVLink 协议:用于无人机与地面站的指令与数据传输(scratch.py 中显式使用)。
HTTP/HTTPS:用于 Web 前端与后端的通信(map.js、xmlrpc/client.py 等)。
第三方库:
pyasn1 及相关模块:处理 ASN.1 编码,可能用于加密或协议解析(如 rfc8017.py 涉及 RSA 相关结构)。
twisted:提供网络协议支持(如 ftp.py、components.py),可能用于异步通信或服务器功能。
redis:cluster.py 表明可能使用 Redis 集群作为缓存或消息队列,提升多无人机并发控制的性能。
serial:list_ports.py 涉及串口枚举,可能用于处理与无人机的物理接口(如 USB 连接)。