Skip to content

Repository files navigation

OpenSerial

一个基于 Rust + Tauri 的开源串口调试工具,面向嵌入式开发、固件联调、设备 bring-up 与日志分析场景。

项目目标不是只做一个“能发收数据”的串口助手,而是做一个更适合嵌入式开发的桌面上位机:既保留传统串口工具的高频基础能力,也提供更直观的日志过滤、搜索、解析和可视化调试能力。

项目定位

OpenSerial 期望覆盖两类需求:

  1. 传统串口工具能力
  2. 面向调试分析的轻量上位机能力

这意味着它既要足够轻、足够快,也要具备向“协议视图 / 事件视图 / 设备状态视图”扩展的能力。

核心目标

  • 开源、跨平台、可扩展
  • 基于 Rust 保证串口收发、并发和日志处理性能
  • 基于 Tauri 构建轻量桌面应用,降低资源占用
  • UI 简约、克制、低饱和,减少调试时的视觉干扰
  • 从“串口收发工具”演进为“嵌入式调试工作台”

目标用户

  • 嵌入式软件工程师
  • 硬件调试工程师
  • 固件开发与测试工程师
  • 需要长期查看串口日志、定位异常、观察状态流转的开发者

首期功能范围

基础串口能力

  • 串口列表自动刷新与设备插拔检测
  • 常见串口参数配置
    • 波特率
    • 数据位
    • 校验位
    • 停止位
    • 流控
  • 打开 / 关闭串口
  • 发送文本、HEX、换行控制
  • 接收区支持文本 / HEX 展示
  • 时间戳显示
  • 收发方向区分
  • 自动滚动、暂停滚动、清空日志
  • 会话日志导出

日志处理能力

  • 实时搜索
  • 多条件过滤
  • 按关键字高亮
  • 按收发方向过滤
  • 按时间区间过滤
  • 按日志级别过滤
  • 支持保留 / 排除规则

面向调试的增强能力

  • 自动检测常见波特率
  • 可配置日志解析规则
  • 将原始日志映射为更直观的调试视图
  • 从连续日志中提取事件、状态和错误模式
  • 支持构建更像上位机的专用面板
    • 状态灯
    • 参数卡片
    • 关键变量区
    • 错误事件列表

非目标

以下内容不作为第一阶段必须完成的目标:

  • 复杂脚本引擎
  • 全协议解析平台
  • 云同步
  • 多人协作
  • 重型 IDE 一体化方案

这些能力可以在后续版本按插件或扩展模块逐步引入。

UI 设计原则

本项目 UI 采用简约风,不追求炫技,不使用高饱和、强刺激的颜色。

风格要求

  • 整体简洁、克制、专业
  • 以低饱和中性色为主
  • 强调信息层级,而不是装饰感
  • 保持长时间查看日志时的舒适度
  • 不做“花里胡哨”的串口工具界面

视觉方向

  • 主色调建议为灰、雾蓝、石墨、浅暖白
  • 强调色仅用于状态提示、选中态和关键告警
  • 成功 / 警告 / 错误颜色保持低饱和表达
  • 优先保证文本对比度与信息密度

交互原则

  • 高频操作一屏可达
  • 日志区域必须是主视觉区域
  • 搜索、过滤、解析结果必须尽量即时反馈
  • 复杂能力渐进展开,不挤占主工作区

UI 结构建议

首版建议采用三栏或双栏可伸缩结构:

  1. 左侧:连接与会话配置
  2. 中间:主日志流
  3. 右侧:过滤器、搜索结果、解析视图、设备状态卡片

推荐的核心界面模块:

  • 顶部工具栏
    • 串口选择
    • 波特率
    • 打开 / 关闭
    • 发送模式
    • 导出
  • 主日志区
    • 时间戳
    • 方向标记
    • 颜色高亮
    • 实时搜索定位
  • 侧边分析区
    • 过滤规则
    • 快捷标签
    • 事件提取
    • 状态可视化面板
  • 底部发送区
    • 快捷发送
    • 历史命令
    • 常用指令收藏

技术方案

桌面框架

  • Tauri
  • Rust

前端建议

  • TypeScript
  • React
  • Vite

说明:前端框架仍可调整,但建议保持轻量和组件化,避免过重依赖。

UI 设计工具

  • Pencil 用于界面原型、布局验证和交互草图

Pencil 在本项目中的定位是:

  • 早期信息架构梳理
  • 关键页面线框设计
  • 低保真到中保真原型沉淀
  • 为前端实现提供明确结构参考

推荐模块划分

src-tauri/
  src/
    app/
    serial/
    log/
    parser/
    session/
    commands/

src/
  modules/
    connection/
    terminal/
    filters/
    search/
    dashboard/
    settings/

后端职责

  • 串口枚举与连接管理
  • 读写线程与缓冲
  • 日志时间戳与结构化封装
  • 自动波特率探测策略
  • 过滤与解析管线
  • 向前端推送实时事件

前端职责

  • 界面状态管理
  • 日志列表展示
  • 搜索与过滤交互
  • 协议 / 事件 / 状态可视化
  • 配置持久化与工作区体验

关键设计点

1. 日志模型要结构化

不要只把串口数据当作一段纯文本。建议每条日志抽象为统一结构,例如:

  • 时间戳
  • 方向
  • 原始字节
  • 解码文本
  • 标签
  • 级别
  • 来源
  • 解析结果

这样后续做过滤、搜索、高亮、统计和状态映射时会轻很多。

2. 过滤器要支持组合

过滤不能只停留在单关键字搜索,建议从一开始就支持组合条件:

  • 包含 / 排除
  • and / or
  • 正则
  • 按方向
  • 按时间
  • 按标签

3. 自动波特率检测要做成策略模块

自动检测波特率不适合写死。建议实现为候选波特率轮询 + 数据有效性评分机制,便于后续迭代优化。

4. 上位机视图建立在解析规则之上

更直观的 debug UI 不应直接绑死在某一类日志文本上,而应基于“规则提取 -> 结构化事件 -> 视图绑定”的流程实现。

版本规划

v0.1

  • 基础串口收发
  • 时间戳
  • 文本 / HEX 显示
  • 搜索
  • 基础过滤
  • 日志导出

v0.2

  • 自动检测常见波特率
  • 高亮规则
  • 多标签过滤
  • 会话配置保存

v0.3

  • 日志解析规则
  • 状态面板
  • 事件流视图
  • 轻量上位机面板雏形

v0.4+

  • 插件化解析器
  • 自定义调试面板
  • 协议模板
  • 更强的项目化工作流

开发原则

  • 先把基础串口体验做稳
  • 再做日志结构化与过滤能力
  • 最后叠加可视化和上位机能力

项目应始终优先保证:

  • 稳定性
  • 可读性
  • 可扩展性
  • 长时间使用的舒适性

开源方向

欢迎围绕以下方向参与贡献:

  • 串口核心能力
  • Windows / macOS / Linux 兼容性
  • 日志过滤与解析
  • 嵌入式调试场景优化
  • UI / UX 设计
  • Pencil 原型与设计规范沉淀

当前状态

项目目前处于规划阶段,README 先用于统一产品方向与技术边界。

下一步建议优先完成:

  1. 项目脚手架初始化
  2. 基础串口读写链路
  3. 日志数据结构定义
  4. 首版 Pencil 原型
  5. 首版主界面实现

Release

仓库使用 cargo-dist 管理发布流程。当前 release workflow 位于 .github/workflows/release.yml,默认在 Windows 上生成 MSI 和 zip 产物;发布入口由 src-tauri/dist-workspace.toml 管理。

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages