8 releases
0.3.1 | Dec 27, 2020 |
---|---|
0.3.0 | Nov 27, 2020 |
0.2.4 | Apr 5, 2020 |
0.1.2 | Dec 3, 2018 |
0.1.1 | Nov 5, 2018 |
#544 in Hardware support
39 downloads per month
Used in 2 crates
44KB
927 lines
J2534
Low-level SAE J2534 (PassThru) support for rust.
J2534 Introduction
SAE J2534 PassThru defines a standard library interface for communicating with vehicle control modules. All automakers in the US are required to provide J2534-compatible service software. J2534 provides access to the communication layer required for accessing vehicle diagnostics services as well as downloading and reflashing control modules.
Usage
The J2534 specification requires PassThru libraries to be compiled for 32 bit, so any program using this crate must be compiled as 32 bit.
Example
use j2534::{Interface, PassThruMsg, Protocol, ConnectFlags, RxStatus, TxFlags};
fn main() -> j2534::Result<()> {
// Open the library and connect to a device
let interface = Interface::new("C:\\device.dll")?;
let device = interface.open_any()?;
// Create a CAN channel
let channel = device
.connect(Protocol::CAN, ConnectFlags::NONE, 500000)
.unwrap();
// Create a new message with an arbitration id of `8` and payload of `[0, 1, 2, 3]`.
let message = PassThruMsg::new_can(8, &[0, 1, 2, 3]);
channel.write(&mut [message], 1000)?;
Ok(())
}
Dependencies
~0.5–1.2MB
~24K SLoC