can

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

By zhinkgit · 596 installs

npx skills add zhinkgit/embeddedskills --skill can

Source repository · Upstream listing

CAN — 嵌入式 CAN / CAN FD 调试工具 统一封装接口发现、实时监控、报文发送、日志记录、数据库文件解码和统计分析能力。 配置 环境级配置 ( skill/config.json ) 仅保留 slcan 相关的环境级配置: 字段 说明 默认值 slcan serial port slcan 场景的串口 "" slcan serial baudrate slcan 场景的串口速率 115200 工程级配置 ( .embeddedskills/config.json ) 工作区下的 .embeddedskills/config.json 存放工程级 CAN 配置: 字段 说明 默认值 interface CAN 后端,如 pcan / vector / slcan "" channel 通道名,如 PCAN USBBUS1 "" bitrate 仲裁域比特率 500000 data bitrate CAN FD 数据域比特率 2000000 log dir 日志输出目录 .embeddedskills/logs/can 参数解析优先级 1. CLI 参数 ( interface , channel , bitrate 等) 最高优先级 2. 工程级配置 ( .embeddedskills/config.json 中的 can 部分) 3. 状态文件 ( .embeddedskills/state.json 中的历史记录) 4. 默认值 最低优先级 自动扫描行为 当未指定 interface 和 channel 时,脚本会自动扫描系统 CAN 接口,按以下步骤处理: 1. 扫描系统中所有可用 CAN 接口 2. 若只找到一个接口 → 自动使用并写入工程配置 3. 若找到多个接口 → 返回候选列表,等待用户选择 4. 若未找到接口 → 提示错误,停止执行 子命令 子命令 用途 风险 scan 扫描可用 CAN 接口与 USB CAN 设备 低 monitor 实时监控总线报文 低 send 发送标准帧 / 扩展帧 / 远程帧 / CAN FD 帧 高 log 记录总线报文到 ASC / BLF / CSV 文件 低 decode 用 DBC 等数据库文件解码报文或日志 低 stats 统计总线负载、ID 分布和帧率 低 执行流程 1. 检查 python can 是否可用,未安装时提示 pip install python can 2. 按优先级解析参数:CLI 工程级配置 状态文件 默认值 3. 无子命令时默认执行 scan 4. monitor / send / log / stats 使用解析后的连接参数 5. decode 先确认数据库文件和输入源存在 6. 若未指定 interface / channel ,自动扫描系统 CAN 接口: 唯一候选:自动使用并写入工程配置 多候选:返回列表让用户选择 7. 成功执行后,将确认的参数写回工程配置 8. send 只要配置可连接就直接执行,不二次确认 9. 运行对应脚本并输出结构化结果 10. 失败时优先反馈接口、驱动、比特率和过滤条件问题 脚本调用 所有脚本位于 skill 目录的 scripts/ 下,通过 python 直接调用。 脚本会按优先级从 CLI 参数、工程级配置、状态文件中读取参数。 输出格式 单次命令返回标准 JSON: 持续命令(monitor json、send listen json)输出 JSON Lines,结束摘要写入 stderr。 错误输出: 核心规则 不自动猜测 interface、channel、bitrate,多接口时不自动选择 参数解析优先级:CLI 工程级配置 状态文件 默认值;自动扫描结果仅在未提供 CLI 参数时生效 未指定 interface / channel 时自动扫描,唯一候选自动写入配置,多候选需用户选择 成功执行后,确认的参数自动写回 .embeddedskills/config.json 未明确说明用途时不主动发送任何报文 json 输出的持续流使用 JSON Lines,摘要写 stderr 不污染数据流 DBC 解码失败不应导致监控中断 找不到帧定义时返回明确错误,不静默吞掉 参考 references/common interfaces.json :常见 USB CAN 设备信息