# ComBox-Pro **Repository Path**: max-uuc/ComBox-pro ## Basic Information - **Project Name**: ComBox-Pro - **Description**: 本项目采用“智能串口屏 + STM32 主控”的架构,旨在解决工程师在现场调试、户外测试或自动化设备维护时,携带笔记本电脑不便、现场接线杂乱、目标板供电不便等痛点。它不仅是一个多路串口助手,更是一个自带电源的紧凑型一体化硬件调试台。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ComBox-Pro V2.0:工业级便携式一体化串口调试台 ### 项目介绍 本项目采用「智能串口屏 + STM32 主控」的高集成度架构,旨在彻底解决工程师在现场调试、户外测试或自动化设备维护时,携带笔记本电脑不便、现场接线杂乱、目标板供电困难等痛点。 它不仅仅是一个四通道同步串口助手,更是一个自带**双路动态调压电源**、支持**脚本自动化执行**的紧凑型硬件调试台。真正的「一盒在手,现场我有」。 当前版本:**V2.0**(在 V1 四通道串口 + Flash 存储基础上,完善双路电源 UI,并新增脚本编辑与自动执行引擎)。 ![输入图片说明](Snipaste_2026-06-07_11-55-41.png) ### 核心特性 - **四路齐发:** 独立的 2 路 RS232 + 2 路 RS485,支持一键同步广播,任意通道均可写入协议。 - **双路动态供电:** 两路独立 5V~24V 可调输出(V1 / V2),各自开关与电位器控制,自带 3A 自恢复保险丝。 - **离线存储:** 非易失性保存 20 条自定义报文(最大 64 字节)、波特率及双路目标电压。 - **脚本自动化:** 4 套脚本 × 每套 8 步,支持电源控制、延时、发指令、循环跳转;可暂停 / 继续 / 停止。 - **安全防呆:** 电源上电默认硬件拉低切断;写入指令采用双包头强校验;波特率越界直接拒绝。 ### 固件架构设计 (Firmware Architecture) 本项目下位机固件采用 **现代 C++ 面向对象 (OOP)** 与 **FreeRTOS** 结合进行工业级重构: - **C++ 面向对象与单例模式:** 串口网关、功率开关、数字电位器等高度抽象为独立类;Flash 总线、DMA 发送队列等核心资源由单例严格管控。 - **FreeRTOS 实时调度:** 底层 HAL 使用「空闲中断 (IDLE) + DMA」搬运串口数据;前台 Task 负责 HMI 报文拦截、CRC 校验、UI 状态机与脚本引擎。 - **模块划分 (`ComBox_FW/CppInterface/`):** - `core/` — 应用状态机(手动测试 / 自动测试 / 脚本编辑) - `comm/` — 串口系统、屏协议分发、设置与远程写指令 - `script/` — 脚本管理、引擎执行、屏侧编解码 - `autotest/` — 自动运行页启停编排 - `hardware/` — 双路电源、电位器、ADC 反馈 - **FlashDB 轻量级数据库:** - **KV 模式:** 管理指令槽、波特率、双路电压、脚本块与 UI 偏好。 - **擦写均衡 & 掉电保护:** 自动均衡扇区寿命,保存过程意外断电也不易损坏数据。 ### 安装教程 (接线与准备) - **主电源输入:** 建议接入 28V DC 稳压电源。(注:受 DCDC 硬件压降影响,若需满载输出 24V,输入必须达到 28V;若仅需较低电压,输入 24V 即可)。 - **端子接线:** - **RS485_1 / RS485_2:** 请严格区分 A 和 B 极。 - **RS232_1 / RS232_2:** 标准 TX/RX 交叉接法(本机的 TX 接目标板的 RX)。 - **VOUT1 / VOUT2 / GND:** 两路动态电压输出端,严禁短路。 - **上电:** 接入主电源后,屏幕点亮即代表启动成功。 ### 使用说明 ![输入图片说明](Snipaste_2026-06-07_11-34-03.png) 更完整的操作步骤见仓库根目录 [`使用说明.md`](使用说明.md);版本变更见 [`CHANGELOG.md`](CHANGELOG.md)。 #### 1. HMI 页面一览 | 页面 | 用途 | |------|------| | **主菜单 (page4)** | 进入手动测试 / 脚本相关功能 | | **手动测试 (page0)** | 波特率、双路电压设定与实测、电源开关、20 条指令分页发送 | | **脚本选择 (page5)** | 选择脚本 1~4,进入编辑或自动执行 | | **脚本编辑 (page2)** | 编辑当前脚本的 8 个步骤 | | **自动运行 (page3)** | 启动 / 暂停 / 停止脚本,查看运行日志 | #### 2. 供电输出控制 - **安全默认值:** 每次重新上电时,**两路** VOUT 默认关闭,防止冷启动误烧目标板。 - **双路调压:** 在手动测试页分别设定 V1 / V2(5.0V - 24.0V)。底层已做线损软补偿;受数字电位器特性影响,实际输出存在小幅容差。 - **过载保护:** 超过 3A 时自恢复保险丝切断。排障:断开主电源,冷却 3~5 分钟后重新上电。 #### 3. 波特率配置 - **设置范围:** 固件允许 `9600` ~ `3000000` bps(按硬件与现场总线能力选用);超出范围则拒绝修改,不做自动钳位。 - **生效方式:** 修改后写入 FlashDB,并**立即**对四路串口生效。请同步确认对端设备波特率,避免短暂失联。 #### 4. 指令存储与发送 - **离线槽位:** 1~20 个独立槽位,单条最大 64 字节;手动页按 4 个子页分页显示,上次页码会记忆。 - **一键广播:** 点击对应槽位「发送」,指令同时从 4 个串口同步击发。 - **UI 智能折叠:** 长指令在预览区仅显示前段;发送后底部 Log 打印完整 HEX。 #### 5. 脚本自动化 (V2.0) - **容量:** 4 套脚本,每套最多 8 步。 - **步骤类型:** - 电源 1 / 电源 2 开关与电压控制 - 延时(毫秒) - 发送已存储的 HEX 指令槽(四路广播) - 循环:对指定槽位重复 N 次,间隔可设 - **编辑流程:** 选脚本 → 编辑页配置步骤 → 离开编辑进入自动运行时写入 Flash。 - **运行控制:** 自动运行页支持启动、暂停/继续、停止,并输出运行日志。 #### 6. 远程写入指令协议 (上位机下发) 支持通过任意 RS232/RS485 接口接收上位机指令并持久化。采用双包头与 CRC8 强校验。 **数据帧格式 (HEX):** ``` [FF AA 或 FA AA] [Slot] [Data...] [CRC8] ``` - `FF AA` / `FA AA`:固定双包头(二选一)。 - `Slot`:指令槽位号(`0x01` ~ `0x14`,即 1~20)。 - `Data...`:不定长指令内容(1 ~ 64 字节)。 - `CRC8`:从包头起至 Data 最后一字节的校验(初始值 `0x00`,多项式 `0x07`)。 **应答:** - 成功:`OK\r\n` - 失败:`ERR\r\n` - CRC 错误时串口回传例如: ``` CRC check failed Got:xx Expected:yy Try send:FF AA ... yy ``` 可直接按 `Try send` 提示修正后重发。 ### FlashDB 主要键(参考) | 键 | 说明 | |----|------| | `hex_cmd_1` … `hex_cmd_20` | 指令槽 | | `sys_baud` | 波特率 | | `vol_ch1` / `vol_ch2` | 双路目标电压 | | `ui_page` | 手动页指令列表子页 | | `se_0` … `se_3` | 脚本引擎二进制块 | | `script_1` … `script_4` | 步骤显示文本缓存 | | `se_ui_0` … `se_ui_3` | 脚本编辑侧 UI 偏好 | ### 文档与版本 | 文件 | 说明 | |------|------| | [`README.md`](README.md) | 项目总览(本文件) | | [`使用说明.md`](使用说明.md) | 现场操作手册 | | [`CHANGELOG.md`](CHANGELOG.md) | 版本变更记录 | | [`问题汇总.md`](问题汇总.md) | 已知硬件/精度问题 | | [`README.en.md`](README.en.md) | English overview |