10个版本
0.1.9 | 2024年7月24日 |
---|---|
0.1.8 | 2024年7月1日 |
0.1.7 | 2024年6月20日 |
0.1.6 | 2023年11月8日 |
0.1.3 | 2023年4月15日 |
78 in 嵌入式开发
3,173 下载/月
用于ecu_diagnostics
70KB
1K SLoC
Rust中的汽车诊断
此crate提供了Rust中对道路车辆进行统一诊断服务(ISO-14229-1)、KWP2000(ISO-142330)和OBD-II(ISO-9141)规范的底层no_std
结构和枚举。
并非所有功能都已实现,但目标是提供一套完整的枚举和结构来处理最常见的诊断命令和响应。如果您需要特定的命令或响应,请打开一个问题或更好的拉取请求。
使用方法
所有值都表示为Rust enum
,可以使用T::from_repr(u8)
和u8::from(value)
转换为它们的底层数值。大多数枚举还有相应的...Byte
枚举作为ByteWrapper<T>
来处理非标准的Extended(u8)
值,以及定义的Standand(T)
值。
use automotive_diag::ByteWrapper::{Extended, Standard};
use automotive_diag::uds::UdsCommand::{DiagnosticSessionControl, ECUReset};
use automotive_diag::uds::UdsCommandByte;
/// Handle a single command byte on the ECU side
fn handle_cmd_byte(cmd: u8) {
match UdsCommandByte::from(cmd) {
Standard(DiagnosticSessionControl) => {
// handle_diag_session()
}
Standard(ECUReset) => {
// handle_ecu_reset()
}
Extended(0x42) => {
// handle_custom_cmd_42()
}
_ => {
// handle all other commands
}
}
}
开发
- 此项目使用just(make的现代替代品)更容易开发。使用
cargo install just
安装它。 - 要获取可用命令的列表,运行
just
。 - 要运行测试,使用
just test
。 - 在
git push
操作中,它将运行一些验证,包括cargo fmt
、cargo clippy
和cargo test
。使用git push --no-verify
来跳过这些检查。
致谢
代码是从令人惊叹的 rnd-ash/ecu_diagnostics 项目中分叉的。代码是从 MIT 许可证迁移到 GPL 许可证之前的最后一个 MIT 版本的代码中分叉的。最初,这个代码是一个已废弃的 auto_uds 包。
许可证
根据以下任一许可证授权:
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),任选其一。
贡献
除非你明确表示,否则根据 Apache-2.0 许可证定义的,你提交给该作品的所有有意包含的贡献,应如上双许可,不附加任何额外条款或条件。
依赖关系
~0.3–0.8MB
~19K SLoC