繁体   English   中英

获取 CAN 比特率

[英]Get CAN bitrate

我想在 C++ 中读取我的 socketcan 套接字当前配置的 CAN 比特率。

我可以通过ip -det link show can0查看比特率:

9: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can state ERROR-ACTIVE restart-ms 100 
    bitrate 1000000 sample-point 0.750 
    tq 125 prop-seg 2 phase-seg1 3 phase-seg2 2 sjw 1
    pcan_usb: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..64 brp-inc 1
    clock 8000000

比特率是通过/etc/network/interfaces ,但用户可以手动更改它。

libsocketcan 似乎只支持设置比特率,但不支持读取它。

产生上述输出的iproute2代码使用 rtnetlink。

如何使用 libnetlink 读取相应的属性? 还是有另一种读取当前比特率的方法?

现在,我继续解释对ip -det link show can0 | grep bitrate | awk '{print $2}'的系统调用的输出。 ip -det link show can0 | grep bitrate | awk '{print $2}' ip -det link show can0 | grep bitrate | awk '{print $2}' ,虽然丑陋但有效。

当然有更优雅的解决方案吗?

您可以使用can_get_bittiming()来获取设置的比特率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM