一款面向汽车测试工程师的 CAN 总线测试工具,支持 UDS 诊断服务测试、CAN 报文收发与自动化测试脚本编写。
- UDS 诊断服务测试 — 支持多种 UDS 服务,一键发送诊断请求
- CAN 报文收发 — 实时发送与接收 CAN 报文,支持多通道
- 自动化测试脚本 — 基于 Python 编写测试用例,自动执行并生成报告
- DTC 读取与清除 — 快速读取/清除故障码
- 数据记录与回放 — 记录总线数据并支持回放分析
| 服务 ID | 服务名称 | 说明 |
|---|---|---|
| 0x10 | DiagnosticSessionControl | 诊断会话控制 |
| 0x11 | ECUReset | ECU 复位 |
| 0x22 | ReadDataByIdentifier | 按标识符读数据 |
| 0x23 | ReadMemoryByAddress | 按地址读内存 |
| 0x24 | ReadDTCInformation | 读取 DTC 信息 |
| 0x27 | SecurityAccess | 安全访问 |
| 0x28 | CommunicationControl | 通信控制 |
| 0x2E | WriteDataByIdentifier | 按标识符写数据 |
| 0x31 | RoutineControl | 例程控制 |
| 0x34 | RequestDownload | 请求下载 |
| 0x36 | TransferData | 数据传输 |
| 0x37 | RequestTransferExit | 结束数据传输 |
| 0x3E | TesterPresent | 心跳保活 |
| 0x85 | ControlDTCSetting | DTC 设置控制 |
| 0x19 | ReadDTCInformation | 读取 DTC 详细信息 |
持续更新中,更多 UDS 服务即将支持...
pip install -r requirements.txtfrom can_test_tool import UDSClient
# 创建 UDS 客户端
client = UDSClient(channel='can0', bitrate=500000)
# 切换到扩展会话
response = client.send_service(0x10, [0x03])
print(response)
# 读取数据标识符
response = client.send_service(0x22, [0xF1, 0x90])
print(response)from can_test_tool import TestRunner, TestCase
# 定义测试用例
test = TestCase("UDS Session Test")
test.add_step("切换扩展会话", 0x10, [0x03], expected_rc=[0x50])
test.add_step("读取VIN", 0x22, [0xF1, 0x90], expected_rc=[0x62])
# 执行测试
runner = TestRunner()
runner.run(test)
runner.generate_report("test_report.html")截图即将补充
| 主界面 | UDS 测试面板 |
|---|---|
![]() |
![]() |
can-test-tool/
├── src/ # 核心源码
├── tests/ # 测试用例
├── docs/ # 文档与截图
├── examples/ # 使用示例
├── requirements.txt # 依赖
└── README.md
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/new-service) - 提交更改 (
git commit -m 'Add new UDS service') - 推送到分支 (
git push origin feature/new-service) - 发起 Pull Request
本项目基于 MIT License 开源。
- 🤖 ATEMall AI知识库 — 汽车测试工程师的AI助手
- 💬 免费使用AI问答,覆盖 HIL / CAN / UDS / EMB 测试领域
- 📋 注册即可获取完整测试模板和DBC文件库
- ⭐ 如果这个工具对你有帮助,欢迎 Star 支持我们!

