# DTool **Repository Path**: chumenzuoguai/dtool ## Basic Information - **Project Name**: DTool - **Description**: 基于Flutter的固件下载工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-01-17 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DTool DTool 是一款基于 Flutter 构建的现代跨平台固件烧录与调试工具,旨在为嵌入式开发者提供流畅、高效的开发体验。 ## 软件架构 本应用采用清晰模块化的架构设计,确保了代码的可维护性与可扩展性。 ### 1. 表现层 (UI) - **框架**: Flutter (Material Design 3)。 - **设计模式**: 组件化 UI 设计。 - **页面**: 拆分为 `FirmwareBurnPage`(固件烧录页)、`SettingsPage`(设置页)和 `AboutPage`(关于页)。 - **组件**: 可复用组件如 `DownloadProgressPanel`(自定义进度显示)和 `_InterfaceTab`,确保风格统一。 - **主题**: 支持动态深色/浅色模式切换,使用 `ValueNotifier` 进行全局状态同步。 ### 2. 状态管理 - **局部状态**: 使用 `StatefulWidget` 处理页面级逻辑(如串口列表刷新、进度条动画)。 - **全局状态**: 使用 `ValueNotifier` 管理应用级主题偏好,无需复杂模板代码即可实现 UI 即时更新。 ### 3. 基础设施与核心层 - **串口通信**: 基于 `flutter_libserialport` 实现强大的跨平台串口访问(列表获取、连接、数据传输)。 - **协议栈**: - **Ymodem 协议**: 自研实现 (`YmodemProtocol` 类),支持标准 XMODEM-CRC16 校验、SOH/STX 帧类型,以及可靠的握手与结束流程。 - **蓝牙优化**: 针对 BLE 蓝牙串口适配器设计的专用**分包机制**,处理 MTU 限制(默认 136 字节,支持自动计算分包大小)。 - **原生集成**: - **Windows**: 定制化 C++ 运行器 (`main.cpp`, `Runner.rc`) 以支持原生窗口标题与品牌标识。 - **Android**: 配置 Manifest 文件以正确显示应用标签。 - **外部工具**: 使用 `url_launcher` 处理外部链接跳转(如 Gitee 仓库、文档)。 ## 功能特性 - **固件烧录**: - **协议支持**: 支持带错误纠正的 **Ymodem** 传输协议。 - **文件支持**: 全面的格式支持,包括 `.bin`, `.hex`, `.elf`, `.axf` 以及 **`.mxxx`**。 - **蓝牙就绪**: 内置 **BLE 串口优化**,支持可配置的 MTU 和自动分包发送,有效防止低吞吐量连接下的丢包问题。 - 支持 **STM32F1XX** 和 **STM32F4XX** 系列芯片。 - 实时下载进度可视化(状态、百分比、速度、预计剩余时间)。 - **串口调试**: - 自动检测与刷新串口。 - 支持高达 2,000,000 bps 的波特率配置。 - 系统日志查看区域。 - **用户界面**: - 现代化的侧边栏导航 (`NavigationRail`)。 - 针对桌面环境优化的自适应布局。 ## 更新日志 ### 2026-02-25 (v1.0.2) - **新增**: 完成固件烧录、AES、规则编辑与进度状态的中英文本地化。 - **调整**: 烧录进度与状态提示统一为可本地化模板。 ### 2026-01-19 (v1.0.1) - **新增**: 新增 AES 加解密工具,支持 AES-128/192/256、DES/2DES/3DES(CBC)。 - **新增**: 支持按 Key/IV 长度自动匹配算法,并按 `4字节自定义数据长度 + 自定义数据 + 4字节明文长度 + 明文数据` 结构生成/解析 `.mxxx` 文件。 - **新增**: 支持长度字节序选择(默认 Little-Endian)。 - **新增**: 支持补齐方式选择(默认 PKCS7),用于满足块大小对齐。 - **新增**: 支持可选 MD5 校验开关:加密时在 bin 尾部追加 16 字节 MD5,解密时自动校验。 - **调整**: 密钥与向量默认使用 UTF-8 输入模式。 ### 2026-01-18 - **新功能**: - **自定义传输规则**: 增加了自定义烧录前/烧录后规则功能,支持通过串口发送自定义数据(uint8/uint16/字符串)。 - **设置持久化**: 引入 `PreferencesService` 实现系统主题、波特率及自定义规则配置的本地存储,下次启动自动恢复。 - **UI 与体验改进**: - 引入 `bitsdojo_window` 实现自定义窗口标题栏,背景色与窗口控制按钮(最小化/最大化/关闭)均可随深色/浅色主题自动切换。 - 使用 Flutter Overlay 系统修复了侧边栏悬浮提示被内容遮挡的问题。 - 采用 `CustomScrollView` 和自适应布局彻底解决了固件烧录页面的 `RenderFlex overflow` 溢出警告。 - 统一了全局配色方案,确保所有页面在深色与浅色模式下风格一致。 - 优化固件上传区域布局,使其固定大小并居中显示。 - 修复了因布局约束冲突导致的鼠标点击失效 (`HitTest` 失败) 问题。 - **代码库优化**: - 重构 `FirmwareBurnPage`,减少嵌套层级,提升代码可读性。 - 修复了 Windows 运行器中的 C++ 编译器警告。 - **UI 重构**: 采用 "Vibrant & Block-based" 设计系统重构固件烧录页面,提升用户体验。 ### 2026-01-17 - **新增**: 支持 Ymodem 协议,通过串口实现可靠的固件烧录。 - **新增**: 蓝牙低功耗 (BLE) 优化,支持可配置 MTU 和自动分包(默认 136 字节),解决数据丢失问题。 - **新增**: 固件文件选择器增加对 `.mxxx` 文件扩展名的支持。 - **变更**: 更新项目仓库链接至 Gitee (https://gitee.com/chumenzuoguai/dtool)。 - **改进**: 实现了固件烧录任务的实时进度同步显示。 ## 快速开始 ### 前置条件 - Flutter SDK (最新稳定版) - C++ 编译器 (Windows 平台需 Visual Studio) ### 安装步骤 1. **克隆仓库**: ```bash git clone https://gitee.com/chumenzuoguai/dtool.git ``` 2. 安装依赖: ```bash flutter pub get ``` 3. 运行应用: ```bash flutter run -d windows ``` ### 构建 Windows 版本 构建 Windows 平台的发布版本 (Release): ```bash flutter build windows ``` 构建完成后,可执行文件位于 `build/windows/x64/runner/Release/` 目录下。