一个基于 Rust + Tauri 的开源串口调试工具,面向嵌入式开发、固件联调、设备 bring-up 与日志分析场景。
项目目标不是只做一个“能发收数据”的串口助手,而是做一个更适合嵌入式开发的桌面上位机:既保留传统串口工具的高频基础能力,也提供更直观的日志过滤、搜索、解析和可视化调试能力。
OpenSerial 期望覆盖两类需求:
- 传统串口工具能力
- 面向调试分析的轻量上位机能力
这意味着它既要足够轻、足够快,也要具备向“协议视图 / 事件视图 / 设备状态视图”扩展的能力。
- 开源、跨平台、可扩展
- 基于 Rust 保证串口收发、并发和日志处理性能
- 基于 Tauri 构建轻量桌面应用,降低资源占用
- UI 简约、克制、低饱和,减少调试时的视觉干扰
- 从“串口收发工具”演进为“嵌入式调试工作台”
- 嵌入式软件工程师
- 硬件调试工程师
- 固件开发与测试工程师
- 需要长期查看串口日志、定位异常、观察状态流转的开发者
- 串口列表自动刷新与设备插拔检测
- 常见串口参数配置
- 波特率
- 数据位
- 校验位
- 停止位
- 流控
- 打开 / 关闭串口
- 发送文本、HEX、换行控制
- 接收区支持文本 / HEX 展示
- 时间戳显示
- 收发方向区分
- 自动滚动、暂停滚动、清空日志
- 会话日志导出
- 实时搜索
- 多条件过滤
- 按关键字高亮
- 按收发方向过滤
- 按时间区间过滤
- 按日志级别过滤
- 支持保留 / 排除规则
- 自动检测常见波特率
- 可配置日志解析规则
- 将原始日志映射为更直观的调试视图
- 从连续日志中提取事件、状态和错误模式
- 支持构建更像上位机的专用面板
- 状态灯
- 参数卡片
- 关键变量区
- 错误事件列表
以下内容不作为第一阶段必须完成的目标:
- 复杂脚本引擎
- 全协议解析平台
- 云同步
- 多人协作
- 重型 IDE 一体化方案
这些能力可以在后续版本按插件或扩展模块逐步引入。
本项目 UI 采用简约风,不追求炫技,不使用高饱和、强刺激的颜色。
- 整体简洁、克制、专业
- 以低饱和中性色为主
- 强调信息层级,而不是装饰感
- 保持长时间查看日志时的舒适度
- 不做“花里胡哨”的串口工具界面
- 主色调建议为灰、雾蓝、石墨、浅暖白
- 强调色仅用于状态提示、选中态和关键告警
- 成功 / 警告 / 错误颜色保持低饱和表达
- 优先保证文本对比度与信息密度
- 高频操作一屏可达
- 日志区域必须是主视觉区域
- 搜索、过滤、解析结果必须尽量即时反馈
- 复杂能力渐进展开,不挤占主工作区
首版建议采用三栏或双栏可伸缩结构:
- 左侧:连接与会话配置
- 中间:主日志流
- 右侧:过滤器、搜索结果、解析视图、设备状态卡片
推荐的核心界面模块:
- 顶部工具栏
- 串口选择
- 波特率
- 打开 / 关闭
- 发送模式
- 导出
- 主日志区
- 时间戳
- 方向标记
- 颜色高亮
- 实时搜索定位
- 侧边分析区
- 过滤规则
- 快捷标签
- 事件提取
- 状态可视化面板
- 底部发送区
- 快捷发送
- 历史命令
- 常用指令收藏
- Tauri
- Rust
- TypeScript
- React
- Vite
说明:前端框架仍可调整,但建议保持轻量和组件化,避免过重依赖。
- Pencil 用于界面原型、布局验证和交互草图
Pencil 在本项目中的定位是:
- 早期信息架构梳理
- 关键页面线框设计
- 低保真到中保真原型沉淀
- 为前端实现提供明确结构参考
src-tauri/
src/
app/
serial/
log/
parser/
session/
commands/
src/
modules/
connection/
terminal/
filters/
search/
dashboard/
settings/
- 串口枚举与连接管理
- 读写线程与缓冲
- 日志时间戳与结构化封装
- 自动波特率探测策略
- 过滤与解析管线
- 向前端推送实时事件
- 界面状态管理
- 日志列表展示
- 搜索与过滤交互
- 协议 / 事件 / 状态可视化
- 配置持久化与工作区体验
不要只把串口数据当作一段纯文本。建议每条日志抽象为统一结构,例如:
- 时间戳
- 方向
- 原始字节
- 解码文本
- 标签
- 级别
- 来源
- 解析结果
这样后续做过滤、搜索、高亮、统计和状态映射时会轻很多。
过滤不能只停留在单关键字搜索,建议从一开始就支持组合条件:
- 包含 / 排除
- and / or
- 正则
- 按方向
- 按时间
- 按标签
自动检测波特率不适合写死。建议实现为候选波特率轮询 + 数据有效性评分机制,便于后续迭代优化。
更直观的 debug UI 不应直接绑死在某一类日志文本上,而应基于“规则提取 -> 结构化事件 -> 视图绑定”的流程实现。
- 基础串口收发
- 时间戳
- 文本 / HEX 显示
- 搜索
- 基础过滤
- 日志导出
- 自动检测常见波特率
- 高亮规则
- 多标签过滤
- 会话配置保存
- 日志解析规则
- 状态面板
- 事件流视图
- 轻量上位机面板雏形
- 插件化解析器
- 自定义调试面板
- 协议模板
- 更强的项目化工作流
- 先把基础串口体验做稳
- 再做日志结构化与过滤能力
- 最后叠加可视化和上位机能力
项目应始终优先保证:
- 稳定性
- 可读性
- 可扩展性
- 长时间使用的舒适性
欢迎围绕以下方向参与贡献:
- 串口核心能力
- Windows / macOS / Linux 兼容性
- 日志过滤与解析
- 嵌入式调试场景优化
- UI / UX 设计
- Pencil 原型与设计规范沉淀
项目目前处于规划阶段,README 先用于统一产品方向与技术边界。
下一步建议优先完成:
- 项目脚手架初始化
- 基础串口读写链路
- 日志数据结构定义
- 首版 Pencil 原型
- 首版主界面实现
仓库使用 cargo-dist 管理发布流程。当前 release workflow 位于 .github/workflows/release.yml,默认在 Windows 上生成 MSI 和 zip 产物;发布入口由 src-tauri/dist-workspace.toml 管理。
MIT