Crates.io | canparse |
lib.rs | canparse |
version | 0.1.4 |
source | src |
created_at | 2018-05-23 04:07:53.20577 |
updated_at | 2019-07-29 00:41:55.839522 |
description | A CAN signal and definition parser |
homepage | |
repository | https://github.com/jmagnuson/canparse |
max_upload_size | |
id | 66729 |
size | 87,030 |
A CAN signal and definition parser, written in Rust.
The goal of canparse is to provide a means of converting CAN frames into
pre-defined signals, via CANdb definition input (DBC).
One common application is the J1939
spec, which defines a set of common parameters for heavy-duty trucks and other vehicles.
PgnLibrary
is also included as an application of DBC, to give first-class support for
the PGN/SPN schema.
Add canparse to your Cargo.toml
with:
[dependencies]
canparse = "0.1"
For a predefined DBC file, a simple program which utilizes PgnLibrary
can be
implemented as folows:
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
- Support for socketcan-rs
has been included for Linux systems requiring a translation from CANFrame
messages,
using SpnDefinition
values.kcd
)Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.