导出数据与诊断包
友善串口调试助手可以按三种粒度把数据交出去:选中的几个字节,贴进固件代码或问题报告;某个端口本次会话收发的全部数据,交给 Excel 或脚本;以及诊断包——一个 .zip,装着技术支持排查问题所需的材料。
| 你想要 | 用这个 |
|---|---|
| 把一帧数据变成 C 数组、Hex Dump 或十六进制字节 | 接收区右键 → 选区复制为 或 选区另存为… |
| 一个端口或全部端口收发的全部数据 | 文件 → 导出会话… |
| 最近几次序列运行的逐步结果 | 文件 → 导出序列报告… |
| 技术支持需要的全部材料,一个文件 | 帮助 → 导出诊断包… |
本页的所有功能都不会上传任何东西。每次导出都是你电脑上的一个文件,交给谁由你决定。
复制或保存选区
在接收区选中一段数据,右键:
- 选区复制为 → C 数组:复制成可以直接贴进固件的 C 源码;
- 选区复制为 → Hex Dump(偏移 + 十六进制 + ASCII):复制成偏移、十六进制、ASCII 三栏,每行 16 字节;
- 选区复制为 → 十六进制字节:复制成
01 03 04 00 0A …这样的字节串; - 选区另存为…:保存为
.c、.txt或.bin文件。
导出的是这段显示背后的原始字节,而不是屏幕上的文字。时间戳、显示时加上的换行等内容不会混进去;选区可以同时包含接收和发送的数据。
- Hex 显示精确到字节:选中哪些字节就导出哪些。
- Text 显示下 ASCII 和 UTF-8 是精确的。其他编码,或显示时被改动过的文本,SPU 会把选区碰到的帧整帧导出——宁可多几个字节,也不给错一个字节——并在状态栏说明。要精确到字节,把接收区切换为 Hex 显示。
- 接收区内容很长时,最早的一部分可能早于 SPU 精确保留的范围,这部分会略去,状态栏同样会说明。
复制上限为 1 MB,更大的选区请用 选区另存为…。回放窗口里的接收区也有这两个命令。
按默认设置复制出的 C 数组如下:
/* Serial Port Utility 6.6.8: COM3 RX 2026-09-25 14:03:07.123, 9 bytes */
#define MODBUS_REPLY_LEN 9
const uint8_t modbus_reply[MODBUS_REPLY_LEN] = {
0x01, 0x03, 0x04, 0x00, 0x0A, 0x00, 0x14, 0xDA, 0x3E
};
第一行注释写明字节的来源:版本、端口、方向、第一个字节的时间和长度。选区跨越多帧时会逐帧列出,例如 COM3, 2 frames (RX 14 B, TX 8 B) from …。同样的字节,Hex Dump 是这样:
00000000 01 03 04 00 0A 00 14 DA 3E |........>|
选区另存为… 打开「保存选区」对话框,下方有实时预览:
- 格式:C 源码(.c、.h)、Hex Dump(.txt) 或 二进制(.bin)——二进制就是原始字节,不加任何内容。
- 数组名:C 不接受的名字不会被拒绝,而是提示「将写为:…」实际写出的名字。默认是
spu_data。 - 每行字节数:1~32,默认 12。
- 长度:#define NAME_LEN 宏(默认,如上例)、sizeof 注释(
}; /* sizeof(modbus_reply) == 9 */)或 不写。 - 包含 <stdint.h> 和 static。
点 保存… 选择保存位置即可。C 源码的这些选项会被记住,选区复制为 → C 数组 也按它们生成。
导出会话
每个端口都有一份会话记录:本次会话收到和发出的每一个字节,外加端口打开、关闭之类的简短记录。它在收发的源头记录,而不是从显示里取,所以 暂停、Hex/Text 显示切换和 清除全部显示 都不影响它——即使忘了开日志,也能导出本次会话。
会话记录保存在内存里,SPU 运行期间一直保留。连接不超过四个时,每个端口保留最近的 8 MB;连接更多时共用 32 MB,但每个端口至少保留 2 MB。达到上限后,最早的记录先被丢弃。长时间测试需要完整保留时,请同时开启日志文件。
选择 文件 → 导出会话…,或在接收区右键选 导出会话…:
- 端口:焦点端口(COM3)——最后获得键盘焦点的那个连接——或 全部端口(N 个),按时间合并成一个文件。
- 格式:CSV(Excel)、JSON Lines(供脚本与回放使用) 或 文本。
- 文本列:CSV 专用,转义 ASCII 或 按端口编码解码。
- 数据显示为:文本格式专用,十六进制 或 文本。
- 仅导出最后一次清空之后的数据:从最后一次 连接 → 清除全部显示(Ctrl+L)之后开始,每个端口按各自最后一次清空计算。焦点端口清空过之后这一项才可选。
对话框会显示焦点端口保留了自何时起的多少条记录,以及更早的数据是否已被丢弃。点 导出… 选择保存位置即可。格式和端口范围的选择会被记住。
| 格式 | 得到什么 |
|---|---|
CSV(.csv) |
每条记录一行:time,t_us,port,dir,peer,bytes,hex,text。UTF-8 带 BOM,Excel 双击打开,中文不乱码。以 =、+、-、@ 开头的值前面会加一个撇号,Excel 把它当文本,而不是当公式执行。 |
JSON Lines(.jsonl) |
第一行是描述各端口的头部,之后每条记录一个 JSON 对象:微秒时间、端口、方向(rx、tx 或 note)和十六进制字节。供脚本处理,回放窗口也能直接打开。 |
文本(.txt) |
简短的头部,之后每条记录一行:时间、端口、RX/TX、对端和数据。文本数据总是转义,保证一条记录只占一行。 |
peer(对端)是远端地址,用于 TCP Server 或 UDP 这类一个端口对应多个客户端的连接。
导出序列报告
焦点端口运行过序列之后,文件 → 导出序列报告… 保存它最近 20 次运行,最新的在前:
- 保存为文本表格(
.txt):每次运行的端口、开始时间、用时和结果,然后每一步一行,列出开始时间、用时、步骤、结果和详情(例如期望回复为什么失败); - 或保存为 JSON(
.json):在保存对话框的文件类型里选择。
焦点端口运行过序列之前,这个菜单项是灰的。
诊断包
出了问题时,帮助 → 导出诊断包… 把排查所需的材料打成一个 .zip。它从不拒绝,也从不提示升级:用到它的人正是在求助。请在关闭 SPU 之前立即导出——会话记录只在 SPU 运行期间保留。
| 复选框 | 默认 | 加入的内容 |
|---|---|---|
| 本次会话的收发数据(包含你发送的全部内容) | 勾选 | 每个端口的会话记录 |
| 工程设置(.spu;家目录下的路径以 ~ 代替,分享名与访客名不包含在内) | 勾选 | 当前工程设置,经过筛选 |
| 命令库、序列、自动应答规则与帧模板 | 勾选 | 工程设置中的这几部分;不勾选时,报告里的序列步骤只写类型和序号 |
| 发送历史(可能含你输入过的密码) | 每次打开对话框都不勾选 | 每个端口的发送历史,放在工程设置里 |
| 序列报告 | 勾选 | 每个端口最近的序列运行 |
| 桥接抓包(每个最近 1 MB) | 勾选 | 每个桥接抓包文件的末尾 |
总是包含:应用版本、系统信息、串口列表、Live Sync 状态。其余选择会被记住。点 保存… 选择保存位置,写完后点 在文件夹中显示 就能找到它。
.zip 里有:
| 条目 | 内容 |
|---|---|
README.txt |
包内有什么、永远不会有什么,以及数据限制,中英双语 |
app/environment.json |
应用版本与构建、Qt 版本、操作系统、CPU 架构、语言、屏幕缩放、Free 还是 Pro、是否已登录、端口数 |
app/preferences.json |
显示与连接偏好,按固定清单读取 |
app/serial-ports.json |
本机列出的串口:名称、描述、厂商、VID/PID |
app/live-sync.json |
RFC 2217、Live Console、Live Relay、Live Share 是否开启 |
project/project.spu |
当前工程设置,经过筛选 |
ports/01-COM3/ … |
每个端口:port.json(设置、状态、计数)、session.jsonl(收发数据)、session.txt(最近 1 MB,十六进制文本)、sequences.txt 与 sequences.json |
bridges/ |
桥接设置与计数器,以及每个抓包文件的末尾 |
manifest.json |
供程序读取的同一份清单,含大小和你的选择 |
发出去之前,可以用任意文本编辑器打开 README.txt 或 session.txt,看清楚自己交出的是什么。
永远不会进包的内容
诊断包按白名单收集,而不是从全部内容里往外删:每个文件逐项组装,SPU 不确定安全的设置一律不带。以下内容永远不会进包:
- 注册码和激活数据;
- 账户信息:ID、邮箱、姓名和登录令牌;
- 本机机器码(CID)、MAC 地址和 CPU ID;
- 用户名和计算机名。
作为第二道防线,SPU 还会在包内文本中擦除可能出现的 CID、注册码、账户邮箱和 MAC 地址;家目录下的路径显示为 ~。
发送之前还有两点要知道:
- 收发数据包含你发送的全部内容。 如果你给设备输入过密码或密钥,请取消第一个复选框,或者改为只导出会话中相关的那个端口。
- 串口名称会保留,因为排查离不开它。macOS 上 USB 转接器的端口名可能含其序列号,蓝牙串口的名称可能含设备名。
Free 与 SPU Pro
选区导出和序列报告完全免费,没有限制。在 Free 里:
- 导出会话导出每个端口最近 500 条记录。每次都会在状态栏说明;JSON Lines 和文本格式的头部会写明哪些端口被截断;每次运行软件第一次截断时会弹出一条简短说明。文件照常写出。
- 诊断包包含每个端口最近 256 KB 数据,导出次数不限,README.txt 会写明哪些端口被截断。桥接抓包在两个版本里都是最近 1 MB。
不计次数:每次导出都从上述限制重新开始。SPU Pro 在导出会话和诊断包里都导出完整的会话记录。