1 个不稳定版本
0.1.5 | 2022年12月2日 |
---|---|
0.1.4 |
|
#10 in #receiving
12KB
239 代码行(不包括注释)
socketcan2-rs
lib.rs
:
SocketCAN支持。
功能
- 接收CAN帧
- 精确的时间戳(时间戳还支持多线程,而通过ioctl调用接收TIMESTAMP则不支持多线程)
- epoll支持(允许在同一线程中等待多个CAN设备)
- 发送CAN帧(尚未实现)
- 过滤CAN帧(尚未实现)
使用示例
#[cfg(test)]
fn on_recv(msg: &Box<Msg>, _user_data: &u64) {
println!("timestamp: {:?}", msg.timestamp());
print!("received CAN frame (id: {}): ", msg.can_id());
for i in 0..msg.len() {
print!("{} ", msg[i as usize]);
}
println!("");
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let can = Can::open("vcan0").unwrap();
let mut cg = CanGroup::<u64>::new();
cg.add(can, 0).unwrap();
match cg.next(Duration::milliseconds(-1), on_recv) {
Ok(no_timeout) => if !no_timeout { panic!("timeout"); },
Err(_) => panic!("error"),
}
}
}
依赖项
~1MB
~19K SLoC