FluentSerialAssistant
Health Warn
- License — License: GPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in scripts/create_deb_package.sh
- rm -rf — Recursive force deletion command in scripts/package_unix.sh
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
FluentSerialAssistant
Fluent 串口助手
基于 C++17、Qt 6 Widgets 和 FluentQtWidgets 的现代串口调试工具。
English · 简体中文
GPL-3.0-or-later · 下载 · 三平台 CI · Code signing policy · 贡献指南
Fluent 串口助手是一个基于 C++17、Qt 6 Widgets 和 FluentQtWidgets 的跨平台串口调试工具。项目目标是提供一个现代 Fluent 风格的串口终端,覆盖常用串口连接、收发、显示、导出和主题配置工作流。
当前版本已完成前期规划的主要串口调试能力,功能以多标签终端工作台、自动日志、快速绘图、数据表格、脚本插件、协议模板和设置为主。
界面截图
功能特性
- 串口扫描:显示端口名、描述、厂商、VID/PID 和序列号。
- 连接参数:支持常用和扩展波特率、数据位、校验位、停止位、流控、RTS、DTR。
- 终端显示:支持文本、HEX、混合显示模式。
- 编码支持:接收和文本发送可分别选择 UTF-8、GBK、ASCII、Latin1。
- 自动断帧:支持按接收间隔、帧头、帧尾和固定长度断帧。
- 协议模板:可定义帧头、长度字段、命令字、载荷和尾部校验字段,保存并切换模板后按模板解析接收帧。
- 记录显示:RX/TX 统一会话记录,支持暂停显示、自动滚动、清空和计数重置。
- 终端检索:支持按关键字搜索、高亮匹配、上/下匹配跳转、大小写敏感、正则搜索,并按全部、接收、发送过滤当前显示。
- 快速绘图:支持按行提取数字、分隔值、多词/中文键值、嵌套 JSON 和二进制字段;界面、CLI、MCP 共用可持久化解析配置,可筛选目标字段,并按整数/浮点、大小端、比例和偏移解码原始帧或协议载荷,支持暂停、清空和 CSV 导出。
- 数据表格:按帧查看时间、方向、来源、长度、HEX、文本和校验结果,支持排序、过滤、复制单帧/HEX,并可定位回终端记录。
- 多标签会话:支持在标题栏创建多个独立会话,新标签会复制当前会话配置,关闭标签会释放对应串口和文件资源。
- 内置虚拟串口对:在设置中开启后,两个会话可分别连接
VIRTUAL-A和VIRTUAL-B,无需驱动即可在应用内双向透传数据。 - 状态统计:显示 RX/TX 总量、实时速率和连接时长。
- TX 着色:可选择发送记录显示颜色。
- 数据发送:支持文本和 HEX 发送,支持 None、CR、LF、CRLF 行结束符。
- 校验工具:支持 CRC16-Modbus、CRC16-CCITT、CRC32、LRC、XOR、SUM8 手动计算和发送时自动追加。
- Modbus RTU:支持常用读写请求帧生成、CRC 自动追加、直接发送和响应摘要解析。
- 左侧卡片:连接、接收、协议模板、发送、Modbus、常用包、宏命令、脚本插件、自动应答和文件发送卡片可折叠,并记住折叠状态。
- 发送历史:保留最近 20 条唯一发送记录。
- 常用包:支持分组、备注、启用/停用、保存、载入、发送、批量发送、删除、排序和 JSON 导入导出。
- 宏命令:支持多步骤发送、步骤间延时、等待文本/HEX 响应、循环运行、失败中止和 CSV 结果导出。
- 脚本插件:内置 JavaScript 脚本运行器,可通过受控
serialAPI 发送文本/HEX、读取收发记录快照、写脚本日志,并支持停止和异常提示。 - AI 控制:提供用户级本地 IPC、机器可读 CLI 和 stdio MCP 服务;AI 可复用 GUI 当前会话完成端口扫描、连接、收发、记录读取、协议选择和曲线窗口控制,不会与 GUI 抢占串口。
- 自动应答:支持文本、HEX 和正则匹配规则,命中后可立即或延时发送指定文本/HEX 应答,并在发送记录中标记来源。
- 循环发送:支持毫秒级发送间隔。
- 文件发送:支持选择文件后按块发送,可配置块大小和块间隔,并显示进度。
- 自动日志:支持 TXT、CSV、BIN 自动记录收发数据,文件名包含时间、串口名和波特率,并可按单文件大小滚动。
- 应用更新:可检查 GitHub Releases 中的最新应用版本。
- 导出记录:支持 TXT、CSV、BIN。
- 接收保存:可将接收原始数据保存到文件。
- 会话恢复:恢复上次串口参数、发送输入、常用包、宏命令、自动应答规则和文件发送参数,可选启动后自动连接。
- 外观设置:支持浅色、深色、跟随系统主题和主题色配置。
- 字体设置:支持界面字体、终端等宽字体、终端字号和 TTF/OTF/TTC 自定义字体导入。
- 界面语言:支持简体中文和 English,可在设置页或标题栏快捷按钮中无需重启切换。
- Fluent 体验:快捷按钮提示、协议示例说明和错误提示统一使用 Fluent 组件库。
- 配置存储:Windows、macOS 和 Linux 均使用系统标准的用户配置目录,不写 Windows 注册表;升级时会自动迁移旧版安装目录中的配置。
技术栈
- C++17
- Qt 6.5+
- Qt Widgets
- Qt SerialPort
- Qt Svg
- Qt Qml
- FluentQtWidgets
- CMake
- Ninja
目录结构
.
├── .github/workflows/ # GitHub Actions CI
├── docs/images/ # README 截图和文档图片
├── scripts/ # 发布和辅助脚本
├── src/
│ ├── app/core/ # 字体偏好、HEX 解析、更新检查等通用逻辑
│ ├── app/control/ # 会话控制接口、本地 JSON IPC 和客户端传输
│ ├── app/resources/ # Qt 资源、应用图标和平台资源
│ ├── app/serial/ # QSerialPort 封装
│ ├── app/view/ # 主窗口、设置页和终端工作台
│ │ └── workbench/ # 终端工作台按职责拆分的实现文件
│ │ ├── *_layout.cpp # 页面整体布局
│ │ ├── *_side_sections.cpp # 左侧连接、收发、常用包、宏命令、自动应答、文件发送配置
│ │ ├── *_terminal_sections.cpp # 终端区和发送区 UI
│ │ ├── *_terminal.cpp # 终端记录、过滤、分色和渲染
│ │ ├── *_packets.cpp # 发送历史和常用包
│ │ ├── *_macros.cpp # 宏命令和测试序列
│ │ ├── *_protocol_templates.cpp # 协议模板保存、切换和解析
│ │ ├── *_scripts.cpp # JavaScript 脚本插件运行
│ │ ├── *_auto_reply.cpp # 自动应答规则匹配、发送和持久化
│ │ ├── *_files.cpp # 记录导出、接收保存和文件发送
│ │ ├── *_connection.cpp # 连接、重连和控件启停
│ │ └── *_state.cpp # 设置恢复、保存、计数和状态更新
│ ├── cli/ # 机器可读 CLI
│ └── mcp/ # MCP stdio 工具服务
├── third_party/FluentQtWidgets/
├── CMakeLists.txt
├── CMakePresets.json
└── README.md
获取源码
项目使用 FluentQtWidgets 作为 Git 子模块:
git clone --recursive <repo-url>
cd FluentSerialAssistant
如果已经克隆但没有拉取子模块:
git submodule update --init --recursive
本地构建
环境要求
- CMake 3.21+
- Ninja
- Qt 6.5+,需要包含
SerialPort、Svg、Core5Compat和Qml模块 - Windows 本地预设默认使用:
- Qt:
C:/Qt/6.11.1/mingw_64 - MinGW:
C:/Qt/Tools/mingw1310_64
- Qt:
Debug
cmake --preset mingw-debug
cmake --build --preset mingw-debug --parallel
运行:
.\build\mingw-debug\FluentSerialAssistant.exe
Release
cmake --preset mingw-release
cmake --build --preset mingw-release --parallel
如果链接时报 cannot open output file FluentSerialAssistant.exe: Permission denied,通常是旧程序仍在运行,请关闭后重新构建。
VS Code 一键构建
仓库内置 .vscode/tasks.json,在 VS Code 中打开项目后可直接使用:
Ctrl+Shift+B/Cmd+Shift+B:执行默认 Debug 构建任务。Terminal > Run Build Task...:选择 Debug 或 Release 构建任务。Run and Debug > Debug FluentSerialAssistant或F5:构建 Debug 版本并启动调试。
Windows 下任务复用 CMakePresets.json 中的 MinGW 预设;macOS 和 Linux 下任务使用 build/vscode-debug 或 build/vscode-release 目录执行 Ninja 构建。
打包发布
推送与 CMake 版本一致的 vX.Y.Z 标签后,GitHub Actions 会生成并发布:
- Windows x64:请求管理员权限并默认安装到 Program Files 的 Inno Setup 安装程序
FluentSerialAssistant-X.Y.Z-windows-x64-setup.exe - macOS arm64:
FluentSerialAssistant-X.Y.Z-macos-arm64.dmg - Linux x64 / arm64:Debian 安装包
FluentSerialAssistant-X.Y.Z-linux-{x64,arm64}.deb - 每个安装包对应的
.sha256校验文件
Windows 发布支持 SignPath Foundation 的免费开源 Authenticode 签名。签名会先应用到FluentSerialAssistant.exe,再构建并签署 Inno Setup 安装程序。申请和仓库配置见
SignPath 设置说明。
本地 Windows 紧凑便携包仍可使用:
.\scripts\package_release.ps1
三平台安装包的底层脚本为 scripts/package_windows.ps1、scripts/package_unix.sh 和 scripts/create_deb_package.sh。
使用说明
- 选择串口端口,必要时点击刷新。
- 配置波特率、数据位、校验位、停止位、流控。
- 点击连接。
- 在终端记录区查看 RX/TX。
- 在发送区输入文本或 HEX 数据,必要时选择收发编码、行结束符和校验自动追加后发送。
- 可在常用包中填写分组、名称、备注、内容、模式和换行后保存,之后选中条目即可填入发送区、直接发送、批量发送或 JSON 导入导出。
- 可在宏命令中保存多步骤测试序列,配置延时、期望响应、循环次数和失败中止后运行,并导出 CSV 结果。
- 可在协议模板中定义帧头、长度字段、命令字、载荷和校验字段,启用后查看接收帧解析结果。
- 可在脚本插件中载入或编写 JavaScript,通过
serial.sendText()、serial.sendHex()、serial.records()和serial.log()自动化调试流程。 - 自动应答中点击“新建”,填写文本、HEX 或正则匹配规则后点击“添加”,可连续添加多条规则;选中已有规则后点击“保存”仅更新该条规则。命中后立即或延时发送指定应答。
- 可选择文件,配置块大小和间隔后分块发送。
- 可打开快速绘图窗口,按全部数字、分隔值、键值对或 JSON 对象协议从接收文本取数并导出 CSV。
- 可打开数据表格窗口,按帧排序、过滤、复制记录,并定位回终端对应记录。
- 可新增标签页同时调试多个串口,新会话会复制当前配置。
- 可点击左侧卡片标题折叠不常用配置,减少侧栏占用。
- 可开启自动断帧、时间戳、自动滚动、循环发送和自动日志等选项。
- 使用 TXT、CSV、BIN 导出会话记录。
内置虚拟串口对
- 打开“设置”,开启“内置虚拟串口对”。
- 在两个会话中分别选择
VIRTUAL-A和VIRTUAL-B并连接;端口列表未更新时点击刷新。 - 在任一端发送文本或 HEX 数据,另一端即可接收;也可配合自动应答规则测试请求与响应。
- 在设置中关闭虚拟串口对,会断开两端的虚拟连接。
虚拟串口对仅在同一应用实例内可用,无需安装驱动,不影响物理串口。它双向透传发送的字节,不模拟波特率和流控;另一端尚未连接时,发送的数据会被丢弃,不会在连接后补发。
AI、CLI 与 MCP 控制
应用启动后,可通过 fluentserial-cli 或 fluentserial-mcp 控制 GUI 当前串口会话。GUI 始终是串口唯一所有者,CLI/MCP 通过当前用户可访问的本地 IPC 复用现有协议解析、记录和实时曲线能力。
fluentserial-cli ports
fluentserial-cli status
fluentserial-cli send-hex --hex "01 03 00 00 00 02 C4 0B"
fluentserial-cli records --direction rx --limit 20
fluentserial-cli plot --plot-protocol keyValue --plot-field "free sram" --clear
架构、MCP 客户端配置、全部工具和 IPC 契约见 AI 控制、CLI 与 MCP 文档。
配置文件使用 Qt QSettings::IniFormat。Windows、macOS 和 Linux 的业务设置均保存到
Qt 提供的系统标准用户配置目录,主题、语言等 Fluent 外观配置也保存在同一目录。
首次运行新版时会自动迁移旧版安装目录中的配置文件。
许可证
本项目采用 GNU General Public License v3.0 or later,详见 LICENSE。
由于本项目依赖的 FluentQtWidgets 也采用 GPL-3.0-or-later,分发本项目或其派生版本时需要遵守 GPL 的源代码开放和再分发要求。
相关项目
Code signing policy
Free code signing is provided by SignPath.io, with a
certificate from SignPath Foundation, after the
project's open-source application is approved. Team roles, release controls,
signed artifact scope, and the privacy statement are documented in the
code signing policy and privacy policy.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found