4 个版本
使用旧 Rust 2015
0.1.4 | 2019年7月29日 |
---|---|
0.1.3 | 2019年2月9日 |
0.1.2 | 2018年6月9日 |
0.1.1 | 2018年5月23日 |
#1816 在 数据库接口
70KB
1.5K SLoC
canparse
使用 Rust 编写的 CAN 信号和定义解析器。
canparse 的目标是提供一个将 CAN 帧转换为预定义信号的手段,通过 CANdb 定义输入(DBC)。一个常见应用是 J1939 规范,该规范定义了重型卡车和其他车辆的通用参数。《PgnLibrary》也作为 DBC 的应用,以提供对 PGN/SPN 架构的一流支持。
使用方法
将 canparse 添加到您的 Cargo.toml
中
[dependencies]
canparse = "0.1"
示例
对于预定义的 DBC 文件,一个利用 PgnLibrary
的简单程序可以如下实现
extern crate canparse;
use canparse::pgn::{PgnLibrary, SpnDefinition, ParseMessage};
fn main() {
// Parse dbc file into PgnLibrary
let lib = PgnLibrary::from_dbc_file("./j1939.dbc").unwrap();
// Pull signal definition for engine speed
let enginespeed_def: &SpnDefinition = lib
.get_spn("Engine_Speed").unwrap();
// Parse frame containing engine speed
let msg: [u8; 8] = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88];
let engine_speed: f32 = enginespeed_def.parse_message(&msg).unwrap();
println!("Engine speed: {}", engine_speed);
}
特性标志
use-socketcan
- 包含了对 socketcan-rs 的支持,以适应需要使用SpnDefinition
值从CANFrame
消息进行转换的 Linux 系统。
替代方案
- canmatrix (Python)
- libcanardbc (C++)
- CANBabel (Java)
- pyvit (Python)
- Kayak (Java, OSS 格式
kcd
)
许可
根据您的选择,许可协议为
- Apache 许可协议第 2 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则任何提交给作品并由您有意提交以包含在内的贡献,根据 Apache-2.0 许可协议定义,都应按上述方式双重许可,不得附加任何其他条款或条件。
依赖
~7MB
~120K SLoC