本文へ移動
cccskills
無料GitHub で公開

serial

嵌入式串口调试工具,用于扫描串口、实时监控、发送数据、记录日志和 Hex 查看。 当用户提到串口、COM 口、UART、AT 命令调试、波特率、Hex 串流、串口抓日志、 串口监控、查看 MCU 输出、二进制协议联调时自动触发,也兼容 /serial 显式调用。 即使用户只是说"看看串口输出"、"发个 AT 命令"或"抓一下日志",只要上下文涉及 串口通信就应触发此 skill。

インストール方法を見る

含まれるファイル(11)

  • SKILL.md8.6 KB
  • config.example.json3 B
  • README.md2.3 KB
  • references/common_devices.json889 B
  • scripts/serial_hex.py5.8 KB
  • scripts/serial_log.py6.2 KB
  • scripts/serial_monitor.py6.5 KB
  • scripts/serial_mux.py16.6 KB
  • scripts/serial_runtime.py14.0 KB
  • scripts/serial_scan.py3.4 KB
  • scripts/serial_send.py5.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Serial — 嵌入式串口调试工具

统一封装端口发现、实时监控、数据发送、日志记录和 Hex 查看能力。

配置

环境级配置 (skill/config.json)

serial skill 的环境级配置目前为空对象 {},因为串口参数属于工程级配置,统一在工作区的 .embeddedskills/config.json 中管理。

工程级配置 (.embeddedskills/config.json)

工作区下的 .embeddedskills/config.json 存放工程级串口配置:

{
  "serial": {
    "port": "",
    "baudrate": 115200,
    "bytesize": 8,
    "parity": "none",
    "stopbits": 1,
    "encoding": "utf-8",
    "timeout_sec": 1.0,
    "log_dir": ".embeddedskills/logs/serial"
  }
}
字段说明默认值
port串口号,如 COM3""
baudrate波特率115200
bytesize数据位8
parity校验位:none/even/odd/mark/spacenone
stopbits停止位:1/1.5/21
encoding文本编码utf-8
timeout_sec读写超时(秒)1.0
log_dir日志输出目录.embeddedskills/logs/serial

参数解析优先级

  1. CLI 参数 (--port, --baudrate 等) - 最高优先级
  2. 工程级配置 (.embeddedskills/config.json 中的 serial 部分)
  3. 状态文件 (.embeddedskills/state.json 中的历史记录)
  4. 默认值 - 最低优先级

自动扫描行为

当未指定 port 时,脚本会自动扫描系统串口:

  • 若只找到一个串口,自动使用该端口并写入工程配置
  • 若找到多个串口,返回候选列表让用户选择(通过 --port 指定)
  • 若未找到串口,提示错误

子命令

子命令用途风险
scan扫描可用串口低
monitor实时查看文本输出低
send发送文本或 Hex 数据中
hex实时查看二进制流低
log保存串口日志到文件低

执行流程

  1. 检查 pyserial 是否可用,未安装时提示 pip install pyserial
  2. 按优先级解析参数:CLI > 工程级配置 > 状态文件 > 默认值
  3. 无子命令时默认执行 scan
  4. monitor / send / hex / log 使用解析后的连接参数
  5. 若未指定 port,自动扫描系统串口:
    • 唯一候选:自动使用并写入工程配置
    • 多候选:返回列表让用户选择
  6. 成功执行后,将确认的参数写回工程配置
  7. 运行对应脚本并输出结构化结果
  8. 失败时优先反馈端口占用、驱动、波特率和编码问题

脚本调用

所有脚本位于 skill 目录的 scripts/ 下,通过 python 直接调用。 脚本会按优先级从 CLI 参数、工程级配置、状态文件中读取参数。

# 扫描串口
python scripts/serial_scan.py [--filter <关键词>] [--json]

# 实时监控
python scripts/serial_monitor.py [--port <串口>] [--baudrate <波特率>] [--timestamp] [--filter <regex>] [--timeout <秒>] [--json]

# 发送数据
python scripts/serial_send.py [--port <串口>] [--baudrate <波特率>] <data> [--hex] [--crlf] [--repeat <次>] [--wait-response] [--json]

# Hex 查看
python scripts/serial_hex.py [--port <串口>] [--baudrate <波特率>] [--width <列>] [--timeout <秒>] [--json]

# 日志记录
python scripts/serial_log.py [--port <串口>] [--baudrate <波特率>] [--output <文件>] [--duration <秒>] [--format text|csv|json] [--json]

输出格式

单次命令返回标准 JSON:

{
  "status": "ok",
  "action": "scan",
  "summary": "发现 2 个串口",
  "details": { ... }
}

持续命令(monitor --json、hex --json)输出 JSON Lines,结束摘要写入 stderr。

错误输出:

{
  "status": "error",
  "action": "monitor",
  "error": { "code": "port_busy", "message": "串口被其他程序占用" }
}

串口多路复用 (Mux)

当需要同时使用 minicom(或其他串口工具)和 skill 脚本访问同一个串口设备时,可以通过 mux 后台服务实现多路复用。

依赖

  • socat — apt install socat / pacman -S socat

架构

                   ┌──────────────────┐
                   │   Real Hardware   │
                   │   /dev/ttyUSB0    │
                   └────────┬─────────┘
                            │
                   ┌────────▼─────────┐
                   │ Python mux server │
                   │ TCP-LISTEN:20001  │  单串口读者 + 广播
                   └────────┬─────────┘
                            │
            ┌───────────────┼───────────────┐
            │               │               │
   ┌────────▼──────┐ ┌─────▼──────┐ ┌──────▼────────┐
   │  socat PTY    │ │ skill      │ │ skill         │
   │ /tmp/serial_  │ │ monitor    │ │ send/log/hex  │
   │ mux_vserial   │ │ socket://  │ │ socket://     │
   └───────┬───────┘ └────────────┘ └───────────────┘
           │
   ┌───────▼───────┐
   │   minicom     │
   │  (用户侧)      │
   └───────────────┘
  • Layer 1: Python mux 进程独占打开真实串口,暴露 TCP server,并把串口 RX 广播给所有客户端
  • Layer 2: socat 作为 TCP 客户端创建虚拟 PTY /tmp/serial_mux_vserial,供 minicom 使用
  • Skill 脚本: 自动检测 mux 状态,仅当本次串口配置与 mux 匹配时通过 socket:// 连接 TCP 端口
  • 数据流: 串口 RX → 广播到所有 TCP 客户端;任一客户端 TX → 转发到真实串口

Mux 管理命令

# 启动多路复用
python scripts/serial_mux.py start --port /dev/ttyUSB0 [--baudrate 115200]

# 查询状态
python scripts/serial_mux.py status

# 停止多路复用
python scripts/serial_mux.py stop

启动后,skill 脚本(monitor/hex/log/send)自动通过多路复用连接,无需额外参数。若命令显式指定了不同串口或串口参数,则不会复用当前 mux。

使用流程

  1. python scripts/serial_mux.py start --port /dev/ttyUSB0
  2. minicom -D /tmp/serial_mux_vserial(用户侧交互)
  3. python scripts/serial_monitor.py(模型侧监控,自动走 mux)
  4. 两个终端同时看到串口数据
  5. python scripts/serial_mux.py stop 停止复用(终止 socat 进程并清理 /tmp/serial_mux_vserial 符号链接)

写入冲突警告

多客户端同时写入会导致串口数据错乱。 监控/hex/log 脚本在通过 mux 连接时输出警告到 stderr。send 脚本输出更强的冲突警告。如需直连真实串口(跳过 mux),使用 --direct 参数。

Mux 状态持久化

mux 进程 PID 保存到 .embeddedskills/state.json 的 serial_mux 段。脚本退出后下次调用 status 会检测进程是否仍存活,自动清理僵尸 PID。start 成功后会把已确认的串口配置写回 .embeddedskills/config.json,方便后续无参命令复用。stop 命令会终止 mux 与 socat PTY 进程,并删除残留的 /tmp/serial_mux_vserial 符号链接。

核心规则

  • 不自动猜测波特率;发现多个候选串口时不自动选择端口
  • 参数解析优先级:CLI > 工程级配置 > 状态文件 > 默认值
  • 未指定 port 时自动扫描,唯一候选自动写入配置,多候选需用户选择
  • 成功执行后,确认的参数自动写回 .embeddedskills/config.json
  • 未明确说明用途时不主动发送任何串口数据
  • --json 输出的持续流使用 JSON Lines,摘要写 stderr 不污染数据流
  • 正则过滤失败不应导致监控退出
  • Mux 运行中发送数据前提示用户避免同时写入

参考

  • references/common_devices.json:常见 USB 转串口芯片 VID/PID 映射

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

can

無料

嵌入式 CAN / CAN-FD 调试工具,用于扫描接口、监控报文、发送测试帧、记录日志、数据库文件解码和总线统计。 当用户提到 CAN、CAN-FD、DBC 解码、总线抓包、USB-CAN 联调、报文发送、总线统计、 PCAN、Vector、slcan、CAN 接口扫描、CAN ID 过滤、ASC 日志、BLF 文件时自动触发, 也兼容 /can 显式调用。即使用户只是说"看看 CAN 报文"、"发一帧试试"或"解码一下 DBC", 只要上下文明确提到 CAN 总线通信的操作或问题就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

eide

無料

EIDE (Embedded IDE) 工程构建工具,用于扫描 .eide/eide.yml 工程、枚举构建 配置 (ConfigName)、执行 build/rebuild/clean 并解析构建日志,返回可供 jlink/openocd 复用的产物路径。当用户提到 EIDE、Embedded IDE、eide.yml、 unify_builder、VS Code EIDE 扩展、Cl.eide 时自动触发,也兼容 /eide 显式调用。 即使用户只是说"用 EIDE 编译一下"或"EIDE 烧录到板子上",只要上下文涉及 EIDE 嵌入式工程就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

gcc

無料

GCC 嵌入式工程构建工具(CMake + arm-none-eabi-gcc),用于扫描 CMake 型嵌入式工程、 列出预设、配置、编译、重建、清理和分析 ELF 大小。当用户提到 GCC、arm-none-eabi、 CMake 嵌入式编译、Ninja 构建、ELF 大小分析、arm-gcc、交叉编译、cmake --build、 cmake --preset 时自动触发,也兼容 /gcc 显式调用。即使用户只是说"编译一下"或 "看看固件多大",只要上下文涉及 CMake 嵌入式 GCC 工程就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

jlink

無料

J-Link 下载与在线调试工具,用于探测设备、烧录固件、读写内存、查看寄存器、复位目标、读取 RTT/SWO 日志, 以及在线调试(暂停/恢复/单步/断点运行/调用栈/变量查看)。 当用户提到 J-Link、JLink、RTT、烧录固件、写内存、读内存、寄存器查看、目标复位、探针连通性检查、 在线调试、单步、断点、调用栈时自动触发,也兼容 /jlink 显式调用。 即使用户只是说"烧录一下"、"看看 RTT 输出"或"调试一下",只要上下文涉及 J-Link 探针就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

keil

無料

Keil MDK 工程构建工具,用于扫描 .uvprojx/.uvproj/.uvmpw 工程、枚举 Target、执行 build/rebuild/clean 并解析构建日志,返回可供 jlink/openocd 复用的产物路径。 flash 子命令仅作为兼容入口保留。当用户提到 Keil、MDK、uVision、UV4、 Target 枚举、编译、重建、清理、烧录、下载固件、flash 时自动触发,也兼容 /keil 显式调用。 即使用户只是说"编译一下"或"烧录到板子上",只要上下文涉及嵌入式 Keil 工程就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

net

無料

嵌入式网络调试工具,用于发现接口、抓包、分析 pcap/pcapng、做连通性测试、端口扫描和流量统计。 当用户提到 Wireshark、tshark、Npcap、抓包、网络联调、端口扫描、连通性排查、pcap 分析、 网络接口、ping 测试、traceroute、流量统计、Modbus TCP、EtherNet/IP 等网络协议调试时自动触发, 也兼容 /net 显式调用。即使用户只是说"抓个包看看"、"扫一下端口"、"网络通不通"或"分析一下这个 pcap", 只要上下文中出现具体工具名(tshark、Wireshark、Npcap)、协议名(Modbus TCP、EtherNet/IP、ICMP 等)、 调试动作(抓包、端口扫描、连通性测试、ping、traceroute、流量统计、pcap 分析)或网络接口操作,就应触发此 skill。

日本語の概要は準備中です。原文の説明を表示しています。

zhinkgit/embeddedskills7362026年9月3日 更新

zhinkgit のスキルをすべて見る

このスキルの問題を報告する