Skip to content

luck-gh/serial_tool_project

Repository files navigation

GHowe 串口调试助手 (GHowe Serial Tool)

专为嵌入式开发者设计的高效串口调试工具
版本 1.2.1 | 2026-06-22

快速开始核心功能高级功能更新历史开发文档


目录


项目概览

GHowe 串口调试助手是一个功能丰富的串口调试工具,基于 PyQt5 构建,提供直观的界面、强大的命令管理、丰富的特殊指令支持,让串口调试变得简单高效。

最新更新 (v1.2.1)

  • ✅ 优化模块模板导入 - 先解析再批量刷新 UI,并增加导入/导出进度反馈
  • ✅ 新增根据文本添加多行 - 支持纯文本和模板 CSV 两种输入格式
  • ✅ 改进模板导入容错 - 模板格式错误时可重新选文件或按纯文本导入
  • ✅ 优化左侧配置区布局 - 控件随侧边栏宽度自适应,端口下拉框紧凑显示并保留完整提示
  • ✅ 修复插件窗口层级 - 内置工具窗口可正常前后切换、多开,并保留可选置顶
  • ✅ 修复接收区偶发空行 - 合并跨串口包拆开的 CRLF,避免显示层产生额外空行
  • ✅ 分离 GUI/CLI 打包 - 同时生成兼容版、GUI 专用版和 CLI 专用版,配置文件名自动忽略 _GUI/_CLI 后缀

👉 查看完整更新: 版本更新记录

核心特性

  • 智能命令管理 - 支持命令模块化组织、批量操作、模板导入导出
  • 特殊指令系统 - 8 种高级指令(mode、modeend、delay、SendHex、BaudRate、SetEndlog、SendMode、StopContinuous),解锁自动化测试能力
  • 灵活的发送模式 - 支持单次发送、连续发送、循环发送,精准控制发送间隔(1ms - 9999ms)
  • 智能输出过滤 - 按来源分类显示(发送、接收、系统、错误),快速定位问题
  • 自动状态保存 - 程序关闭时自动保存所有配置、命令、界面布局,下次启动自动恢复
  • 远程控制 - 支持局域网主控端/远程端串口控制
  • CLI 自动化 - 支持命令行发送字符串、十六进制和特殊命令
  • 外部工具集成 - 支持固件下载工具、进制转换器等,完整传递串口配置和 ACK 参数

技术特点

  • 🎯 工具注册表机制 - 集中管理所有工具配置,易于扩展
  • 非阻塞异步执行 - 使用 QTimer 实现特殊指令,UI 始终响应
  • 🔄 版本自动兼容 - 配置文件自动迁移,无需手动升级
  • 🖥️ GUI/CLI 独立入口 - 兼容版、GUI 专用版和 CLI 专用版可同时打包,默认共用同一份配置
  • 🌐 局域网远程控制 - 支持主控端/远程端协同控制串口设备
  • 🎨 模块化架构 - 清晰的代码结构,便于维护和二次开发
  • 🔧 完整串口参数 - 支持数据位、校验位、停止位完整配置传递
  • 📋 标准 CSV 处理 - 符合 RFC 4180 标准,兼容 Excel/LibreOffice

主界面预览

主界面截图

界面布局说明

  • 左侧:命令表格区域(支持批量操作)
  • 中间:接收显示区(实时显示通信数据)
  • 右侧:配置面板(串口设置、发送设置)

适用场景

  • 嵌入式设备调试 - GPS 模块、GSM 模块、传感器等
  • 寄存器配置 - 芯片寄存器读写、参数配置
  • 协议测试 - AT 指令测试、自定义通信协议验证
  • 批量测试 - 设备稳定性测试、压力测试

快速开始

环境要求

  • Python: 3.6+
  • 操作系统: Windows / Linux / macOS
  • 依赖库:
    • PyQt5 (≥5.15.0) - GUI 框架
    • pyserial (≥3.5) - 串口通信

安装步骤

方式一:使用 pip 安装依赖

# 克隆或下载项目
git clone <repository_url>
cd serial_tool_project

# 安装依赖
pip install PyQt5 pyserial

# 或使用 requirements.txt (如果提供)
pip install -r requirements.txt

方式二:直接使用可执行文件

下载打包好的可执行文件(.exe),无需安装 Python 环境,双击即可运行。

启动应用

开发环境运行:

# 使用 Python 模块方式运行(推荐)
python -m serial_tool_project.main

# 或直接运行脚本
cd serial_tool_project
python main.py

生产环境运行:

# Windows
.\GHowe串口助手.exe

# Linux/macOS
./GHowe串口助手

首次使用

[配置流程截图占位符 - 待添加配置界面截图]

步骤 1:配置串口

  • 在"基本设置"区选择 COM 端口(如 COM3)
  • 设置波特率(如 115200)
  • 设置数据位、校验位、停止位(通常使用默认值)
  • 点击"连接"按钮

步骤 2:输入命令

  • 在命令输入框中输入要发送的命令
  • 例如:AT\r\n(AT 指令 + 回车换行)

步骤 3:发送命令

  • Enter 键快速发送(推荐)
  • 或点击"发送"按钮

步骤 4:查看结果

  • 在"接收区"查看设备返回的数据
  • 发送的命令和接收的数据以不同颜色区分

快速开始流程图

安装依赖 → 启动应用 → 配置串口 → 输入命令 → 发送 → 查看结果
   ↓          ↓          ↓          ↓        ↓        ↓
 pip安装   运行main.py  选择端口  输入AT命令  按Enter  接收区显示

CLI 命令格式

CLI 模式使用配置文件中的 state.basic_settings 打开串口, 并按 state 中的显示设置输出发送和接收数据。

# 发送普通字符串
python main.py --cli --send "AT"
GHowe_串口调试助手_CLI.exe --send "AT"

# 指定配置文件
python main.py --cli --config custom_config.json --send "AT"

# 发送十六进制数据
python main.py --cli --send "SendHex:AA 55 01"

# 修改配置中的 COM 口和波特率
python main.py --cli --port COM5
python main.py --cli --baudrate 115200

# 使用特殊命令修改串口配置
python main.py --cli --send "ComPort:COM5"
python main.py --cli --send "BaudRate:115200"
python main.py --cli --send "SetEndlog:\r\n"

# 按配置文件 state.commands 中的模块发送
python main.py --cli --send "Mode:初始化"
python main.py --cli --send "SendMode:初始化"

常用参数:

参数 说明
--cli 启用 CLI 模式;CLI 专用 exe 中可省略
--send "命令" 发送字符串或特殊命令
--config 文件 指定配置文件
--port COMx 更新配置中的 COM 口
--baudrate 115200 更新配置中的波特率
--read-timeout 300 发送后读取等待时间, 单位 ms

完整说明见 命令行使用指南


核心功能详解

1. 串口通信配置

支持完整的串口参数配置,满足各种设备通信需求。

配置参数

参数 可选值 说明
端口 COM1, COM2, ... / ttyUSB0, ... 串口设备名称
波特率 9600, 115200, 230400, ... 通信速率
数据位 5, 6, 7, 8 每字节的数据位数
校验位 None, Even, Odd, Mark, Space 奇偶校验方式
停止位 1, 1.5, 2 停止位数量

操作步骤

  1. 点击端口下拉框,选择目标串口
  2. 设置波特率(常用:9600、115200)
  3. 其他参数保持默认或根据设备要求调整
  4. 点击"连接"按钮建立连接

连接状态提示

  • 连接成功:按钮变为"断开",系统区显示"串口已连接"
  • 连接失败:系统区显示错误信息(如"端口被占用")

2. 命令管理与发送

灵活的命令管理系统,支持创建、编辑、组织和发送多条命令。

命令表格功能

  • 命令编辑 - 双击命令单元格直接编辑
  • 勾选控制 - 勾选框控制是否发送该命令
  • 注释说明 - 为每条命令添加注释,便于理解和维护
  • 拖拽排序 - 拖拽行来调整命令顺序
  • 右键菜单 - 插入行、删除行、批量操作

发送方式

  1. 单次发送

    • 在命令输入框输入命令,按 Enter
    • 或点击"发送"按钮
  2. 批量发送

    • 勾选表格中要发送的命令
    • 点击"发送选中"按钮
    • 按照勾选顺序依次发送
  3. 连续发送

    • 设置"连续间隔"(毫秒)
    • 点击"连续发送"按钮
    • 持续按间隔重复发送
  4. 循环发送

    • 勾选"循环发送"
    • 设置"循环间隔"(毫秒)
    • 发送完一轮后等待循环间隔,然后重新开始

3. 特殊指令详解

特殊指令是 GHowe 串口助手的核心功能之一,支持 8 种高级指令,实现复杂的自动化调试流程。

3.1 mode:[name] - 命令模块化

作用:将相关的命令组织到一个模块中,便于管理和切换。

格式mode:[模块名称]

示例

序号 命令 说明
1 mode:初始化 定义"初始化"模块开始
2 AT+CMGF=1 设置短信文本模式
3 AT+CSCA= 读取信息中心号码
4 mode:业务处理 切换到"业务处理"模块
5 AT+CMGS="电话" 发送短信

应用场景

  • 按功能分组管理复杂的命令序列
  • 快速切换不同的测试模块
  • 配合 SendMode 指令实现模块间跳转

配置说明

  • 模块名称支持中文和英文
  • 每个模块可以包含任意数量的命令
  • 模块之间自动隔离,互不影响

3.2 delay:[ms] - 非阻塞延迟

作用:在命令序列中插入延迟,等待设备响应或状态稳定。

格式delay:500(表示延迟 500 毫秒)

示例

AT+CMGF=1
delay:1000          # 等待 1 秒,确保设备处理完成
AT+CSCA?            # 查询信息中心号码
delay:500           # 等待 0.5 秒
AT+CMGL="ALL"       # 列出所有短信

应用场景

  • 寄存器配置间隔 - 写入寄存器后等待生效
  • 设备启动等待 - 设备上电后等待初始化完成
  • 命令同步延迟 - 确保前一条命令执行完毕

技术特点

  • 非阻塞实现:使用 QTimer,不会冻结界面
  • 精度:毫秒级(1ms - 9999ms)
  • 可视化:执行过程中在系统区显示"延迟中..."

3.3 SendHex:[hex] - 十六进制发送

作用:直接发送原始十六进制字节数据,不进行任何编码转换。

格式SendHex:48656C6C6F(会自动格式化为 48 65 6C 6C 6F

示例

SendHex:FF                      # 发送单字节 0xFF
SendHex:01 40 10 85 00 88 1     # 寄存器写入指令
SendHex:48 65 6C 6C 6F          # 发送 "Hello" 对应的十六进制

实时格式化功能

  • 输入时自动添加空格,提高可读性
  • 自动过滤非法字符(只保留 0-9, A-F)
  • 光标位置智能修正

应用场景

  • 二进制协议 - 发送不可打印字符
  • 寄存器操作 - 直接写入寄存器地址和数值
  • 固件升级 - 发送固件数据包

注意事项

  • 十六进制字符不区分大小写(FF 和 ff 等效)
  • 空格会被自动忽略
  • 每两个字符代表一个字节(如 FF = 255)

3.4 BaudRate:[baud] - 波特率动态切换

作用:在命令执行过程中动态切换串口波特率。

格式BaudRate:9600

执行流程

正常通信(当前波特率 115200)
    ↓
遇到 BaudRate:9600
    ↓
断开当前串口连接
    ↓
以新波特率 9600 重新连接
    ↓
继续执行后续命令(使用 9600 波特率)

示例

AT+CMGF=1           # 使用初始波特率 115200
BaudRate:9600       # 切换到 9600
AT+CSCA=            # 使用 9600 波特率发送
BaudRate:115200     # 切换回 115200

应用场景

  • 某些设备启动时需要不同的波特率
  • 测试设备在不同波特率下的响应
  • 自适应波特率调试

注意事项

  • 切换波特率时会短暂断开连接(通常 < 100ms)
  • 设备也需要支持波特率切换
  • 建议在切换后添加 delay 指令,等待连接稳定

3.5 SetEndlog:[ending] - 结尾符设置

作用:动态修改发送命令的行尾标识符(换行符、回车符等)。

支持的值

含义 字节 使用场景
None 无结尾符 (空) 二进制协议
\r\n 回车 + 换行 0x0D 0x0A Windows 风格(最常用)
\r 仅回车 0x0D 旧式 Mac 系统
\n 仅换行 0x0A Linux/Unix 系统

示例

SetEndlog:\r\n
AT+CMGF=1             # 实际发送:AT+CMGF=1\r\n

SetEndlog:\n
AT+CSCA               # 实际发送:AT+CSCA\n

SetEndlog:None
SendHex:FF 00 12      # 实际发送:FF 00 12(无结尾符)

应用场景

  • 不同设备对结尾符的要求不同
  • 测试设备对不同结尾符的兼容性
  • 二进制协议通常不需要结尾符

注意事项

  • 设置后影响所有后续命令
  • 可以随时修改
  • 与 SendHex 指令配合使用时特别有用

3.6 modeend:[value] - 结束模块定义

作用:显式结束当前 mode 模块定义,让后续命令重新归入默认模块。

格式modeend:0modeend:

示例

mode:初始化
AT+RST
AT+GMR
modeend:0
AT+CSQ          # 这里开始重新归入默认模块

应用场景

  • 在一个模板中显式结束某个模块,避免后续命令继续归属到该模块
  • 导入导出模板时保持模块边界清晰
  • 配合 SendMode、循环发送使用时,更精确地控制模块范围

注意事项

  • modeend 本身主要用于模块边界标记,不发送实际串口数据
  • 遇到 modeend 后,后续命令会重新归入默认模块
  • 建议与 mode: 成对使用,提升大型命令模板的可读性

3.7 SendMode:[module] - 模块跳转

作用:在循环发送过程中,临时跳转到指定模块执行一次。

格式SendMode:模块名称

执行流程

正在循环发送"主流程"模块
    ↓
遇到 SendMode:初始化
    ↓
暂停当前模块,跳转到"初始化"模块
    ↓
执行"初始化"模块的所有命令
    ↓
返回"主流程"模块,继续循环

示例

模块 命令 说明
主流程 AT+CMGL="ALL" 列出所有短信
主流程 delay:1000 等待 1 秒
主流程 SendMode:检测 跳转到"检测"模块
检测 AT+CSQ 查询信号强度
检测 AT+CREG? 查询网络注册状态

应用场景

  • 定期执行检测任务(如每 10 次循环检测一次信号)
  • 条件性触发特定操作流程
  • 复杂的自动化测试场景

注意事项

  • 跳转的模块必须已经定义(使用 mode:模块名称
  • 跳转执行完毕后自动返回原模块
  • 支持嵌套跳转(但不建议过度嵌套)

3.8 StopContinuous:[param] - 停止连续发送

作用:控制连续发送流程,可选择提前结束本轮,或完全停止连续发送与循环发送。

格式StopContinuous:0StopContinuous:1StopContinuous:

参数说明

参数 行为 说明
0 或空 提前结束本轮 跳过当前轮剩余命令,等待循环间隔后进入下一轮(默认)
1 完全停止 立即停止连续发送,并取消循环发送

示例

mode:主流程
AT+TEST1
AT+TEST2
StopContinuous:0
AT+TEST3          # 本轮不会继续执行
mode:主流程
AT+TEST1
StopContinuous:1  # 立即停止连续发送和循环发送
AT+TEST2          # 不会继续执行

系统消息

  • StopContinuous:0 或空参数:显示 StopContinuous: 提前结束本轮发送
  • StopContinuous:1:显示 StopContinuous: 已停止连续发送和循环发送

应用场景

  • 在循环测试中满足条件后立即结束本轮,缩短等待时间
  • 在异常场景下彻底停止自动化发送流程
  • modeSendMode 配合,实现更细粒度的流程控制

注意事项

  • 该指令主要用于连续发送或循环发送流程控制
  • 参数留空时等同于 0
  • StopContinuous:0 会进入下一轮循环,StopContinuous:1 才会彻底停止

4. 输出过滤与显示

支持按来源分类显示日志,帮助快速定位问题。

四种输出来源

来源 颜色 内容说明 典型示例
发送 蓝色 你发送的所有命令 [发送] AT+CMGF=1
接收 黑色 设备返回的数据 [接收] OK
系统 灰色 工具的系统消息 [系统] 串口已连接
错误 红色 错误和异常信息 [错误] 端口打开失败

过滤器勾选

  • 发送 - 显示所有发送的命令
  • 接收 - 显示设备返回的数据
  • 系统 - 显示系统消息
  • 错误 - 显示错误信息

使用技巧

  1. 只勾选"接收" - 集中查看设备回复,隐藏发送命令和系统消息
  2. 只勾选"错误" - 快速定位问题所在
  3. 全部勾选 - 完整的调试日志,适合详细分析
  4. 取消勾选"系统" - 减少干扰信息,专注于数据交互

时间戳功能

  • 勾选"显示时间戳":每条输出前显示精确时间(精确到毫秒)
  • 示例:[14:32:15.123] [发送] AT+CMGF=1
  • 用途:分析命令执行时序、性能问题排查

其他功能

  • 暂停显示 - 暂停接收区更新,方便查看历史数据
  • 清空输出 - 清空接收区所有内容
  • 自动滚动 - 自动滚动到最新数据(可关闭)

5. 批量操作

针对频繁编辑命令列表的场景,提供快速批量操作能力。

5.1 多行批量勾选

功能:选中多行命令,一次性勾选/取消勾选。

操作步骤

  1. 按住 Shift 键,点击起始行和结束行(或按住 Ctrl 键多选)
  2. 点击任意一行的勾选框
  3. 所有选中行同步勾选/取消勾选

应用场景

  • 快速勾选一组相关命令
  • 批量禁用某些调试命令

[批量勾选演示截图占位符 - 待添加]


5.2 批量插入行

功能:快速插入多个空行。

操作步骤

  1. 右键点击命令表格
  2. 选择"批量插入多行"
  3. 输入插入数量(如 10)
  4. 在当前位置插入指定数量的空行

应用场景

  • 为新的测试模块预留空间
  • 快速扩展命令列表

5.3 批量删除行

功能:一次性删除多个选中的行。

操作步骤

  1. 选中要删除的多行命令(Shift 或 Ctrl 多选)
  2. 右键点击,选择"批量删除选中行"
  3. 确认删除

应用场景

  • 清理无用的命令
  • 快速删除整个测试模块

5.4 快捷键

快捷键 功能 说明
Enter 快速发送当前命令 在命令输入框按 Enter 立即发送
Ctrl+H 唤起进制转换器 选中数值后快速转换

6. 文件模板管理

支持将命令列表保存为模板文件,方便复用和分享。

6.1 导出模板

功能:将当前命令列表保存为文件。

操作步骤

  1. 点击菜单 → "导出命令"
  2. 选择输出格式:
    • CSV (推荐) - 通用电子表格格式,可用 Excel 打开
    • TXT - 纯文本格式
  3. 选择保存位置
  4. 点击"保存"

保存内容

  • 命令内容
  • 勾选状态(true/false)
  • 注释说明

当前导入导出增强

  • 导入与导出过程显示弹窗进度条
  • 支持中途取消操作
  • 导入取消后自动回滚到导入前状态
  • 导出先写入临时文件,再原子替换目标文件,避免取消时覆盖原文件

CSV 格式示例

选中,命令,注释
true,AT+CMGF=1,设置文本模式
true,AT+CSCA=,读取信息中心号码
false,AT+CMGD=0,删除所有短信

6.2 导入模板

功能:加载已保存的命令模板。

操作步骤

  1. 点击菜单 → "导入命令"
  2. 选择要导入的文件(.csv 或 .txt)
  3. 选择导入模式:
    • 覆盖 - 清空现有命令,使用导入的命令
    • 追加 - 将导入的命令添加到列表末尾
  4. 确认导入

应用场景

  • 为不同的项目/设备维护不同的模板
  • 团队共享命令模板
  • 快速恢复常用的测试流程

最佳实践

  • 定期导出备份,防止意外丢失
  • 为模板文件使用描述性名称(如 GPS模块_初始化命令.csv
  • 命令注释要清晰,便于 6 个月后回顾

高级功能

1. 连续发送与循环发送

支持两种自动化发送模式,适应不同的测试场景。

1.1 连续发送

特点:按照固定时间间隔重复发送选中的命令。

用途

  • 定时状态查询
  • 周期性数据上报
  • 持续性压力测试

配置流程

  1. 在命令表格中勾选要持续发送的命令
  2. 设置"连续间隔"(毫秒),如 100ms
  3. 点击"连续发送"按钮
  4. 命令以 100ms 的间隔重复发送,直到点击"停止"

示例

命令: AT+CSQ   (勾选)
连续间隔: 1000ms
结果: 每 1 秒查询一次信号强度

1.2 循环发送

特点:完整发送一轮选中的命令,然后等待一段时间后重新开始。

用途

  • 完整的工作流程验证
  • 周期性测试批次
  • 复杂的自动化测试序列

配置流程

  1. 勾选需要循环的命令序列
  2. 设置"循环间隔"(毫秒),如 1000ms
  3. 勾选"循环发送"
  4. 工具会:
    • 一次性发送所有勾选的命令
    • 等待 1000ms
    • 重复上述过程

执行时间线(示例)

时间    0ms  | 发送命令 1
时间  100ms  | 发送命令 2 (间隔 100ms)
时间  200ms  | 发送命令 3 (间隔 100ms)
时间  300ms  | 一轮完成,等待循环间隔
时间 1300ms  | 循环开始,重新发送命令 1
时间 1400ms  | 发送命令 2
时间 1500ms  | 发送命令 3
时间 1600ms  | 一轮完成,等待循环间隔
时间 2600ms  | 下一轮循环开始...

智能优化

  • 在发送过程中遇到 delay:XXX 指令会自动应用延迟
  • 遇到 SendMode:xxx 指令会临时切换模块
  • 接收区实时显示发送的命令和返回的结果

2. 命令模块化

使用 mode: 指令将命令按功能分组管理。

优势

  • 清晰组织 - 将相关命令归类到一个模块
  • 快速切换 - 在模块下拉框中选择不同模块
  • 模块跳转 - 使用 SendMode 指令在模块间跳转

示例

mode:初始化
AT+CMGF=1
AT+CSCA=
delay:1000

mode:发送短信
AT+CMGS="13800138000"
Hello World!

mode:查询短信
AT+CMGL="ALL"

模块切换

  • 在模块下拉框中选择"初始化",只显示初始化模块的命令
  • 在模块下拉框中选择"发送短信",切换到发送短信模块

配合循环发送

  • 选择"初始化"模块,勾选循环发送,只循环执行初始化命令
  • 选择"查询短信"模块,勾选循环发送,定期查询短信

3. 外部工具集成

支持集成外部工具,扩展功能。

3.1 内置进制转换器

功能:快速转换十六进制、十进制、二进制、八进制。

启动方式

方式一:快捷键启动

  1. 在接收区或命令框选中一个数值(如 0x1F255
  2. Ctrl+H
  3. 转换器弹出,自动填充选中的值

方式二:右键菜单启动

  1. 在接收区或命令框右键
  2. 选择"十进制转换器"
  3. 手动输入要转换的值

功能示例

输入: FF
自动计算:
  十六进制: FF
  十进制:   255
  二进制:   11111111
  八进制:   377

3.2 自定义工具集成

功能:集成第三方工具(如协议分析器、日志查看器等)。

配置步骤

  1. 点击主界面左下角"配置"按钮
  2. 在"工具设置"选项卡找到目标工具
  3. 勾选"启用"
  4. 点击"浏览..."选择工具的可执行文件(.exe)或 Python 脚本(.py)
  5. 保存配置

支持的工具类型

  • Python 脚本 (.py) - 使用 python.exe 执行
  • 可执行文件 (.exe) - 直接运行
  • 其他脚本 - 需要安装对应运行环境

[工具配置对话框截图占位符 - 待添加]


4. 自动保存与恢复

应用会自动保存所有工作状态,重新启动时恢复之前的环境。

自动保存的内容

保存内容 恢复效果
命令列表 所有命令、勾选状态、注释
串口配置 波特率、数据位、校验位等
发送设置 结尾符、连续间隔、循环间隔、颜色
界面布局 各面板大小、是否折叠
输出过滤设置 各输出来源的勾选状态
最后使用目录 文件导入导出时的默认目录

工作流程示例

周一 10:00
  ├─ 输入 30 条命令
  ├─ 配置特殊指令和延迟
  ├─ 调整界面布局
  └─ 工作到一半时关闭应用
     → 自动保存所有状态到 main_config.json

周二 09:00
  ├─ 启动应用
  └─ 一切恢复如初:命令、配置、布局完全一致
     → 无需重新配置,立即继续工作

配置文件说明

  • 位置:项目根目录下的 main_config.json
  • 格式:JSON 格式,可手动编辑(高级用户)
  • 备份建议:定期备份配置文件,防止意外丢失

手动清除历史(如需重置):

  1. 关闭应用
  2. 删除或重命名 main_config.json
  3. 重新启动应用(将使用默认配置)

故障排查与支持

常见问题 FAQ

Q1: 提示"端口被占用"或"无法打开端口"?

可能原因:

  • 串口正在被其他程序使用(如其他调试工具、虚拟机等)
  • 权限不足(Linux/macOS)

解决方案:

  1. 关闭其他可能占用串口的程序

  2. 在本工具中点击"断开",然后重新"连接"

  3. Linux/macOS 用户:确保有串口访问权限

    sudo chmod 666 /dev/ttyUSB0

Q2: 接收到的数据是乱码?

可能原因:

  • 波特率设置不匹配
  • 数据位、校验位、停止位设置不正确
  • 编码问题

解决方案:

  1. 确认设备的波特率,调整工具的波特率匹配
  2. 尝试常用配置:8 数据位、无校验、1 停止位
  3. 检查设备是否发送了特殊编码的数据

Q3: 发送命令后没有反应?

可能原因:

  • 命令格式错误
  • 结尾符设置不正确
  • 设备未就绪

解决方案:

  1. 确认命令格式是否正确
  2. 尝试不同的结尾符设置(\r\n, \r, \n, None)
  3. 添加 delay 指令,等待设备就绪
  4. 检查设备是否已正确连接和上电

Q4: 打开工具时提示"信号灯超时时间已到"?

问题描述: 串口工具打开状态下启动下载工具报错

根本原因: 串口关闭后系统需要时间释放资源

解决方案 (已在 v1.1.1 修复):

  • 工具会自动等待串口资源释放(最多 5.5 秒)
  • 如仍出现问题,可手动断开串口后稍等片刻再打开工具

Q5: 工具配置参数未传递到下载工具?

问题描述: 外部工具收不到串口参数或 ACK 配置

解决方案 (已在 v1.1.1 修复):

  • 确保使用最新版本 (v1.1.1+)
  • 现已支持完整传递 40+ 个配置参数
  • 包括:串口配置、CRC 设置、ACK 配置等

Q6: 如何找到我的串口设备?

Windows:

  1. 打开"设备管理器"
  2. 展开"端口(COM 和 LPT)"
  3. 查找设备名称(如 COM3)

Linux:

ls /dev/tty*
# 常见的串口设备:/dev/ttyUSB0, /dev/ttyACM0

macOS:

ls /dev/cu.*
# 常见的串口设备:/dev/cu.usbserial-*

Q7: 配置文件丢失或损坏怎么办?

解决方案:

  1. 删除或重命名 main_config.json
  2. 重新启动应用(将使用默认配置)
  3. 如果有备份,可以恢复备份的配置文件

预防措施:

  • 定期导出命令模板作为备份
  • 重要配置手动备份 main_config.json

性能优化建议

  1. 高速通信 - 波特率 > 115200 时,建议增加连续发送间隔
  2. 大量命令 - 超过 1000 条命令时,建议分模块管理
  3. 日志过滤 - 长时间运行时,取消勾选不需要的输出来源
  4. 定期清理 - 定期清空接收区,避免数据过多影响性能

反馈与贡献

如果您在使用过程中遇到问题或有改进建议,欢迎通过以下方式反馈:

  • 问题反馈: 提交 Issue 到项目仓库
  • 功能建议: 在 Issue 中描述您的需求
  • 代码贡献: Fork 项目,提交 Pull Request
  • 文档改进: 修正错误或补充文档内容

贡献者指南: 参考 开发者笔记


相关文档

📚 完整文档集


许可证

本项目采用 MIT License 开源协议。


GHowe 串口调试助手 - 让串口调试更简单
Made with ❤️ by GHowe

About

支持 GUI/CLI、命令模板、特殊指令、局域网远程控制和自动化调用的串口调试工具。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages