工具
cantools CAN 总线数据库工具
面向 CAN 总线数据库的 Python 3 库和命令行工具,可解析 DBC、KCD、SYM、ARXML 3/4 和 CDD 文件,对 CAN 报文进行编码和解码,支持简单与扩展信号多路复用以及诊断 DID。其命令行可依据数据库解码 candump 输出、用 matplotlib 绘制 candump 日志中解码出的信号、转储每条报文的位布局、在数据库格式之间转换、生成 C 语言打包与解包代码,并通过 python-can 在文本界面中监视实时总线。
- 目标
- 协议
- 类别
- 协议分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时最新版本为 45.1.0,于 2026-10-20 发布在 GitHub 和 PyPI;所审阅的 master 提交比该标签多 15 个提交。可用 pip 安装;pyproject.toml 要求 Python 3.10+,依赖 python-can、bitstruct、textparser、crccheck 和 argparse_addons,并提供绘图(matplotlib)、缓存(diskcache)以及监视器所需 Windows curses 支持等可选扩展。
- 需要自备描述目标网络的数据库以及从该网络采集的帧:decode 从标准输入读取 candump 输出,plot 读取 candump 日志文件,monitor 则通过 python-can 的总线参数连接实时接口;README 中的脚本示例在 SocketCAN 通道上收发帧。仓库的 tests/files 目录收录示例和测试所用的 DBC、KCD、SYM、ARXML 和 CDD 示例数据库以及生成的 C 源码。
- 解码范围仅限所提供数据库中定义的内容;cantools 应用现有的报文和信号定义,并不推断未知布局;README 还指出生成的 C 代码仅支持不超过 64 位的信号。采用 MIT 许可。本次未连接总线,也未解码任何采集数据。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.rst GitHub · cantools/cantools · 修订 5d37340
- README.rst#L1-L35 GitHub · cantools/cantools · 修订 5d37340
- README.rst#L83-L130 GitHub · cantools/cantools · 修订 5d37340
- README.rst#L291-L310 GitHub · cantools/cantools · 修订 5d37340
- pyproject.toml GitHub · cantools/cantools · 修订 5d37340
- src/cantools/subparsers GitHub · cantools/cantools · 修订 5d37340
- src/cantools/subparsers/monitor.py GitHub · cantools/cantools · 修订 5d37340
- tests/files GitHub · cantools/cantools · 修订 5d37340
- LICENSE GitHub · cantools/cantools · 修订 5d37340
- https://github.com/cantools/cantools/releases/tag/45.1.0
- https://pypi.org/project/cantools/45.1.0/
- https://cantools.readthedocs.io/en/latest/