获得CAN比特率

时间:2016-09-05 14:35:30

标签: c++ c++11 can-bus netlink socketcan

我想在C ++中读取当前配置的socketcan socket的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似乎只支持设置比特率,但不支持读取它。

code of iproute2 that produces the output above使用rtnetlink。

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

2 个答案:

答案 0 :(得分:3)

现在,我一直在解释系统调用ip -det link show can0 | grep bitrate | awk '{print $2}'的输出,这是丑陋但有效。

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

答案 1 :(得分:0)

您可以使用enter image description here来获取设置的比特率。