认识 BMCLI:从安装到第一次总线分析
在汽车电子开发中,一段总线数据往往只是工作的起点。接下来,还要查找报文、解释信号、绘制曲线,或把一次诊断操作整理成同事也能使用的测试工具。
BMCLI 就是为这些工作准备的。它是 BUSMUST 提供的命令行工具,可以连接 BUSMUST 分析仪,完成 CAN、CAN FD、LIN 报文收发,并提供数据库解析、诊断、标定、节点仿真和录制回放等功能。它既能由工程师直接调用,也适合交给 Claude Code、Codex 等主流 AI 编程助手使用。您可以全程用自然语言提出需求、提供资料和调整效果,无需亲手编写代码或脚本。AI 负责生成需要的应用,BMCLI 负责把它接到真实设备上。
BMCLI 与 BUSMASTER、BMAPI 有什么不同
Section titled “BMCLI 与 BUSMASTER、BMAPI 有什么不同”如果您使用过 BUSMASTER,可以把三者理解为访问总线的三种方式:
| 工具 | 主要使用方式 | 适合的工作 |
|---|---|---|
| BUSMASTER | 在图形界面中配置和操作 | 日常观察报文、调试信号、手动分析 |
| BMAPI SDK | 在程序中调用 API | 开发需要直接控制硬件的应用 |
| BMCLI | 通过命令、脚本或 Web API 调用 | 自动化测试、AI 辅助开发、快速搭建工程工具 |
AI 负责理解需求、组织步骤和编写界面,BMCLI 负责与硬件和协议打交道。例如,您提出“把车速和档位做成一个网页”,AI 可以调用 BMCLI 接收报文、加载 DBC、取得工程值,再生成页面。
这样一来,沟通的起点可以是“希望看到什么结果”,而不仅是“先调用哪个函数”。AI 编程助手可以在本机调用 BMCLI,也可以在获准访问的远程工程主机上运行它;关键是运行 BMCLI 的主机能够访问到设备所在的运行环境。
BMCLI 为 AI 提供怎样的工程基座
Section titled “BMCLI 为 AI 提供怎样的工程基座”设想为台架制作一个“录制/回放”页面。按钮本身并不复杂,真正花时间的是背后的工作:连接设备、读取报文、保留时间戳、处理 ASC/BLF 格式、安排回放周期,再应对停止、断线和资源释放。
有了 BMCLI,这些工作已有专门接口。AI 可以调用录制和回放服务,围绕它们生成按钮、进度和项目报告。您描述的是“按工况保存记录,选一段重放”,而不是日志文件格式或 USB 收发循环。
这种分工也适用于更大的系统:BMCLI 提供总线抽象和协议语义,AI 生成的应用负责用户交互、业务流程、持久化数据与系统集成。配套 Skill 还整理了环境准备、接口发现和常见工程用法,使 AI 有现成的方法可循。编程助手支持的模型都可以搭配 BMCLI,按任务复杂度选择即可;无论用哪个模型,效果都要用真实输入和运行结果来检验——通信协议已由 BMCLI 实现好,模型无需从零开始。
BMCLI 的主要命令与用途
Section titled “BMCLI 的主要命令与用途”BMCLI 的命令通常由“类别、操作、参数”组成。例如:
# 在指定通道采集报文;带 --decode 时同时按数据库输出工程值。bmcli message recv --channel=vehicle-can --duration=10 --format=jsonl这里,message 表示报文类命令,recv 表示接收;后面的参数指定通道、持续时间和输出格式。这条命令在已准备好的 vehicle-can 通道上接收 10 秒,将结果按 JSONL 逐行输出。AI 可以直接读取这些记录,继续做统计、绘图或生成报告。
接收、发送或保存日志等任务可以直接使用命令完成。下面按功能给出独立调用示例:总线操作先配置并打开通道,数据库操作先加载资源,诊断与标定先建立相应协议连接。请按项目替换示例中的逻辑名称、文件和变量;具体参数可查阅在线帮助。
| 能力类别 | 命令关键字 | 代表性调用 |
|---|---|---|
| 通道发现与配置 | channel |
bmcli channel enumerate --format=json:列出可用设备通道 |
| 报文接收 | message recv |
bmcli message recv --channel=vehicle-can --duration=10 --format=jsonl:取得一段总线记录 |
| 报文发送 | message send |
bmcli message send --channel=vehicle-can --id=0x100 --data="01 02 03 04 05 06 07 08" --count=1 --format=json:发送一帧指定数据 |
| 总线统计 | stat |
bmcli stat show --channel=vehicle-can --format=json:查看已启动统计的结果 |
| DBC 信号解析 | dbc |
bmcli dbc signal list --message=VehicleStatus --database=vehicle --format=json:查看报文中的信号定义 |
| 录制 | logging |
bmcli logging start --channel=vehicle-can --path=logs/run.blf --log-format=blf --duration=10 --format=json:保存 10 秒 BLF 日志 |
| 回放 | replay |
bmcli replay start --channel=vehicle-can --file=logs/run.blf --format=json:将已有记录重新发送到台架 |
| 周期发送任务 | txtask |
bmcli txtask list --channel=vehicle-can --format=json:查看该通道的发送任务 |
| 报文路由 | route |
bmcli route list --channel=vehicle-can --format=json:查看该通道的报文路由规则 |
| UDS 诊断与刷写 | isotp、uds |
bmcli uds did read 0xF190 --format=json:在已配置的诊断连接上读取 DID |
| LIN 主从通信 | lin、ldf |
bmcli ldf schedule show NormalTable --database=body-lin --format=json:查看 LDF 调度表 |
| XCP 测量与标定 | a2l、xcp |
bmcli xcp measurement read EngineSpeed --database=ecu --format=json:按 A2L 变量名读取测量值 |
| CANopen 节点服务 | canopen |
bmcli canopen object list --database=node --format=json:查看 EDS 对象字典 |
| Modbus 工业模块接入 | modbus |
bmcli modbus resource list --database=plant --format=json:查看已登记的模块资源 |
| 节点仿真与故障规则 | simulation |
bmcli simulation validate --file=node.json --format=json:离线检查节点配置 |
| 统一信号网关 | gateway |
bmcli gateway validate --file=bridge.bmgw --format=json:离线检查信号映射工程 |
| Web 数据与应用接口 | web |
bmcli web start --listen=127.0.0.1:18080:启动本机 Web 服务 |
运行环境与项目管理
Section titled “运行环境与项目管理”下面这些接口负责准备环境和管理服务,建议与上面的总线功能分开理解。Bench 保存项目与本机设备的对应关系,daemon 管理持续运行的任务,AI 接口则安装和检查给编程助手使用的技能说明。
| 运行基础 | 命令关键字 | 代表性调用 |
|---|---|---|
| 版本信息 | version |
bmcli version --format=json |
| 环境检查 | doctor |
bmcli doctor --format=json |
| 项目台架配置 | bench |
bmcli bench show --format=json |
| 后台服务 | daemon |
bmcli daemon status --format=json |
| AI 技能配置 | ai |
bmcli ai status --format=json |
比如,录制和回放已经负责了文件格式与总线时序,AI 只需围绕它们组织“保存工况”和“重跑实验”的操作界面。诊断与标定接口则让应用直接使用 DID 或测量变量,而不必重新实现协议。发送、回放和诊断调用会产生总线通信,适合在已确认操作范围的测试台架上使用。
命令解决具体操作,Skill 帮助 AI 将这些操作组织成完整方案。同一份采集结果可以用于页面显示、日志记录和测试判断;节点仿真也可以成为回归测试的输入。需要深入某个参数时,可查阅 BMCLI 在线帮助,或让 AI 查询本机 Help。后续教程将逐步展示这些接口怎样组合成项目工具。
从分析报告,到项目专用工具
Section titled “从分析报告,到项目专用工具”下面这张图概览了第二至第十三篇的应用方向。您可以先浏览感兴趣的成果,再从后面的几个例子感受它们如何用于日常工作。
图 1-1 后续十二篇场景教程的成果概览;这些应用可以按项目继续组合与扩展。
看懂总线上的数据。 一份 DBC 配合一段抓包,就可以得到报文清单、带单位的信号值和变化趋势。原来的十六进制数据,现在可以读成“车速 72.5 km/h,档位 D”。
把项目资料整理成测试。 通信矩阵中的 ID、周期、范围与诊断表中的 DID,可以转成有明确判断条件的用例。报告不仅给出结果,也说明每项检查对应哪条要求。
给台架做一个工程面板。 将实时数值、曲线、报文列表和录制、发送等操作放到同一页面。它可以从本机联调起步,也可以结合业务服务与 HTTPS 反向代理,成为多人使用的远程工程应用。
补齐暂时缺席的节点。 ECU 尚未到位时,可先仿真周期报文和信号变化;进入测试阶段后,再加入丢帧、重复帧等异常,观察接收端的处理。
组织诊断与刷写流程。 将会话、下载和校验等步骤串起来,显示进度,并把失败原因定位到具体阶段。项目特有的地址、算法和流程则由项目配置提供。
这些案例的共同点,是让您用工程语言提出目标,由 AI 组合 BMCLI 的现成能力。随着需求增加,报告可以长成工具,工具也可以融入更大的系统。
BMCLI 支持 Windows 和 Linux。Windows 10/11 用户可在 PowerShell 中运行:
# 下载并运行 Windows 安装脚本。irm https://download.busmust.com/bmcli/install.ps1 | iexLinux 用户可运行:
# 下载并运行 Linux 安装脚本。curl -fsSL https://download.busmust.com/bmcli/install.sh | sh现场电脑采用离线安装时,可先完整解压正式安装包,再运行包内安装脚本。以 Windows 为例:
# 从已准备好的离线安装包执行安装。$packagePath = Read-Host "请输入已下载的 Windows ZIP 安装包完整路径"powershell -ExecutionPolicy Bypass -File .\share\bmcli\packaging\install.ps1 ` -PackagePath $packagePath安装完成后,请重新打开终端,运行以下检查:
# 确认当前软件版本。bmcli version --format=json# 检查 AI 技能说明的安装状态。bmcli ai status --format=json# 检查运行环境和依赖是否就绪。bmcli doctor --format=json# 列出可用设备与稳定通道标识。bmcli channel enumerate --format=json这四项分别确认软件版本、AI 技能配置、运行环境和设备通道。Windows 需要安装配套的 BUSMUST 设备驱动;Linux 的 USB 访问权限可按安装包说明配置 udev。
如果 ai status 提示技能尚未安装,可运行 bmcli ai setup --target=all,再重新打开 AI 会话。这里的 Skill 是提供给 AI 的 BMCLI 使用说明,帮助它查找命令和理解返回结果。
给 AI 的输入:完成第一次连接
Section titled “给 AI 的输入:完成第一次连接”准备好能够执行本机命令的 AI 编程助手,例如 Codex 或 Claude Code,就可以开始第一次任务了:
我已安装 BMCLI,并连接了 BUSMUST 分析仪。请检查软件、驱动、AI Skill 和可用通道,参考已有 Bench 配置选择接收通道。我们先做只听检查:确认接线和总线参数后监听 10 秒,整理一份简短报告,说明发现了哪些设备、是否收到报文,以及接下来适合做哪项分析。需要我补充的信息请列出来。
其中的 Bench 是台架配置,用来记录“哪个逻辑网络连接哪个设备端口、使用什么参数”。如果项目已有这份配置,AI 就能沿用熟悉的网络名称;首次接入时,请提供序列号、端口和接线信息,方便 AI 准确识别台架。
BMCLI 的持续接收和后台任务由后台服务 daemon 管理。AI 会先检查是否已有可复用的服务,再按确认的参数打开通道。团队共用台架时,约定好设备使用时段,检查过程会更顺畅。
成品与效果:第一份连接报告
Section titled “成品与效果:第一份连接报告”一份实用的检查报告不必很长。例如,本系列演示台架中的通道信息可以整理为:
| 检查内容 | 演示台架结果 |
|---|---|
| 接收设备 | BM-USB-XL4,序列号 10357 |
| CAN 端口 | 10357/0,支持 CAN 与 CAN FD |
| 本次通信配置 | Classic CAN,500 kbit/s |
| 接收内容 | VehicleStatus,CAN ID 0x100 |
| 可继续分析的资料 | VehicleStatus 演示 DBC |
设备数量和端口以当前枚举结果为准。如果暂时没有收到数据,报告可以进一步提示检查对端供电、休眠状态或总线参数,让排查有一个明确起点。
在与车辆断开的双分析仪测试台上,还可以进一步验证主动链路。例如,让发送端发出 4 帧,接收端确认收到 4 帧。本系列的报告样例展示了这样的结果;实际使用时,可在只听检查后单独提出这项测试。
实现解析:连接报告怎样产生
Section titled “实现解析:连接报告怎样产生”前面的安装检查可以由您直接运行;这次报告则由 AI 组织调用并整理结果。AI 通过 version、ai status 和 doctor 检查环境,通过 channel enumerate 确认通道,再依据 Bench 准备只听采集。BMCLI 返回设备信息与接收记录,AI 将它们整理成报告中的表格和结论。主动链路验证是另外一项任务,只有您明确提出后才执行。
进一步探索:从第一次连接开始积累
Section titled “进一步探索:从第一次连接开始积累”保存一份项目台架配置
Section titled “保存一份项目台架配置”第一次连接成功后,可以请 AI 将设备端口、速率和用途整理到项目 Bench 中,并为网络取一个容易识别的名字,例如“动力 CAN”。以后分析脚本和页面使用逻辑名称,设备更换时只需调整本机绑定。再附上一段供电与接线说明,同事就能沿用这份配置开始工作,也能减少反复确认端口的时间。
让第一份记录变成信号报告
Section titled “让第一份记录变成信号报告”如果手边已有 DBC,可以接着告诉 AI:“请把刚才的记录按这份数据库解释,挑出与当前工况有关的信号。”实现上继续使用 BMCLI 的数据库与解码接口,再由 AI 整理单位、范围和曲线。这样就能从“收到数据了”走到“知道数据在说什么”;下一篇教程将完整展开这一步。