我想在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似乎只支持设置比特率,而不支持读取比特率。
code of iproute2
that produces the output above使用rtnetlink。
如何使用libnetlink读取对应的属性?或者有其他方法来读取当前的比特率?
发布于 2016-09-06 16:14:47
现在,我选择了将系统调用的输出解释到ip -det link show can0 | grep bitrate | awk '{print $2}'
,这很难看,但很好用。
当然还有更优雅的解决方案?
发布于 2019-12-05 21:39:42
您可以使用can_get_bittiming()获取设置的码率。
https://stackoverflow.com/questions/39332885
复制相似问题