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数据库接口

MIT/Apache

70KB
1.5K SLoC

canparse

Build Status codecov

使用 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 系统。

替代方案

许可

根据您的选择,许可协议为

贡献

除非您明确声明,否则任何提交给作品并由您有意提交以包含在内的贡献,根据 Apache-2.0 许可协议定义,都应按上述方式双重许可,不得附加任何其他条款或条件。

依赖

~7MB
~120K SLoC