#socket-can #bcm #can #sockets

tokio-socketcan-bcm

使用tokio的异步Linux SocketCAN - 广播管理器支持(BCM)

4个版本 (1个稳定版)

1.0.0 2020年9月23日
0.2.0 2019年3月19日
0.1.1 2019年3月13日
0.1.0 2019年3月12日

#839 in 异步

每月下载 27次
dbcc 中使用

MIT 许可证

26KB
472 代码行

tokio-socketcan-bcm

LICENSE VERSION docs

广播管理器协议提供了一个基于命令的配置接口,以在内核空间中过滤和发送(例如循环的)CAN消息。在内核空间中过滤消息可以显著减少应用程序的负载。

BCM套接字不适用于发送单个CAN帧。要发送单个帧,请使用 tokio-socketcan crate。

没有 socketcan crate,这个crate将无法实现。

示例

use std::time;
use tokio_socketcan_bcm::*;
use futures_util::stream::StreamExt;

#[tokio::main]
async fn main() {
    let socket = BCMSocket::open_nb("vcan0").unwrap();
    let ival = time::Duration::from_millis(0);

    // create a stream of messages that filters by the can frame id 0x123
    let mut can_frame_stream = socket
        .filter_id_incoming_frames(0x123.into(), ival, ival)
        .unwrap();

    while let Some(frame) = can_frame_stream.next().await {
        println!("Frame {:?}", frame);
        ()
    }
}

依赖项

~8.5MB
~158K SLoC