# pogo_dronecan_gui_tool **Repository Path**: dronepogo/pogo_dronecan_gui_tool ## Basic Information - **Project Name**: pogo_dronecan_gui_tool - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-06 - **Last Updated**: 2025-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pogo DroneCAN GUI Tool (Qt 6.10.1 C++ 版本) 这是从 Python PyQt5 版本移植到 Qt 6.10.1 C++ 的 DroneCAN GUI 工具。 ## 项目结构 ``` gui_tool_qt6_10_1/ ├── CMakeLists.txt # CMake 构建配置 ├── README.md # 本文件 ├── SUBMODULES.md # 子模块说明文档 ├── .gitmodules # Git 子模块配置 ├── include/ # 头文件目录 │ ├── core/ # 核心功能(DroneCAN 节点、应用等) │ ├── ui/ # UI 主窗口和对话框 │ └── widgets/ # 各种 Widget 组件 ├── src/ # 源文件目录 │ ├── main.cpp # 程序入口 │ ├── core/ # 核心功能实现 │ ├── ui/ # UI 实现 │ └── widgets/ # Widget 实现 ├── third_party/ # 第三方库(Git 子模块) │ ├── dronecan-canard/ # DroneCAN Canard 库(C 实现) │ └── dronecan-dsdl/ # DroneCAN DSDL 定义文件 ├── tools/ # 工具(Git 子模块) │ └── dronecan_dsdlc/ # DSDL 解析工具(Python) ├── resources/ # 资源文件 │ ├── icons/ # 图标文件 │ └── resources.qrc # Qt 资源文件 ├── scripts/ # 构建脚本 │ ├── init_submodules.bat # Windows 子模块初始化脚本 │ └── init_submodules.sh # Linux/macOS 子模块初始化脚本 └── build/ # 构建输出目录(gitignore) ``` ## 构建要求 - CMake 3.21 或更高版本 - Qt 6.10.1 或更高版本 - C++17 兼容的编译器 - Windows: MSVC 2019+ 或 MinGW - Linux: GCC 7+ 或 Clang 5+ - macOS: Xcode 10+ ## 首次构建前准备 ### 初始化 Git 子模块 本项目使用 Git 子模块来管理 DroneCAN 相关依赖。首次克隆后需要初始化子模块: **Windows:** ```bash scripts\init_submodules.bat ``` **Linux/macOS:** ```bash chmod +x scripts/init_submodules.sh ./scripts/init_submodules.sh ``` **或者手动执行:** ```bash git submodule update --init --recursive ``` 更多子模块信息请参阅 [SUBMODULES.md](SUBMODULES.md)。 ## 构建步骤 ### Windows (使用 Visual Studio) ```bash # 确保子模块已初始化 git submodule update --init --recursive mkdir build cd build cmake .. -G "Visual Studio 17 2022" -A x64 cmake --build . --config Release ``` ### Windows (使用 MinGW) ```bash # 确保子模块已初始化 git submodule update --init --recursive mkdir build cd build cmake .. -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/mingw_64 cmake --build . ``` ### Linux ```bash # 确保子模块已初始化 git submodule update --init --recursive mkdir build cd build cmake .. -DCMAKE_PREFIX_PATH=/path/to/qt6 cmake --build . ``` ### macOS ```bash # 确保子模块已初始化 git submodule update --init --recursive mkdir build cd build cmake .. -DCMAKE_PREFIX_PATH=/path/to/qt6 cmake --build . ``` ## 依赖项 ### Qt6 模块 - Qt6::Core - Qt6::Widgets - Qt6::Gui - Qt6::Network - Qt6::SerialPort - Qt6::Charts - Qt6::Svg ### 外部库(通过 Git 子模块管理) - **dronecan-canard**: DroneCAN Canard 库(C 实现),提供 DroneCAN 协议栈核心功能 - 路径: `third_party/dronecan-canard` - 自动编译为静态库并链接到主程序 - **dronecan-dsdl**: DroneCAN DSDL 定义文件 - 路径: `third_party/dronecan-dsdl` - 包含所有 DroneCAN 消息和服务定义 - **dronecan_dsdlc**: DSDL 解析工具(Python,可选) - 路径: `tools/dronecan_dsdlc` - 用于构建时生成代码(如果需要) ### CAN 总线驱动 - 通过 Qt SerialPort 支持串口转 CAN 适配器 - 通过系统 CAN 接口支持(Linux: SocketCAN, Windows: 需要相应驱动) ## 功能特性 ### 已实现 - [ ] 项目基础结构 - [ ] CMake 构建系统 ### 待实现 - [ ] 主窗口框架 - [ ] DroneCAN 节点管理 - [ ] 节点监控 Widget - [ ] 日志显示 Widget - [ ] 本地节点配置 - [ ] 文件服务器 - [ ] 动态节点 ID 分配 - [ ] 总线监控 - [ ] 控制台 - [ ] 订阅器 - [ ] 绘图器 - [ ] 各种面板(ESC、执行器、RC、RTK 等) ## 开发计划 1. **阶段 1:基础框架** ✅ - 项目结构 - CMake 配置 - 主窗口框架 2. **阶段 2:核心功能** - DroneCAN 节点集成 - 基础 Widget 移植 3. **阶段 3:高级功能** - 所有 Widget 和 Panel 移植 - 完整功能测试 ## 从 Python 版本的改进 1. **性能提升**:C++ 原生性能,无 Python 解释器开销 2. **内存效率**:更好的内存管理 3. **部署简化**:单一可执行文件,无需 Python 环境 4. **跨平台一致性**:Qt6 提供更好的跨平台支持 ## 许可证 MIT License - 与原始 Python 版本相同 ## 贡献 欢迎提交 Issue 和 Pull Request。