1.
当CAN
2.
下面以CAN发送数据为例,介绍怎么检测BUS-OFF过错状况。
struct can_frame framesend = {
err = write(s_can0, &framesend, sizeof(framesend));
经过检测framesend .can_id是否被BUS-OFF置位。
3.
最好的处理办法是:restart。can0出错了,restart can0。
4.
检测CAN BUS-OFF过错并进行处理,网上已经有开源代码,我们能够参阅这个网址:http://www.pengutronix.de/software/libsocketcan/download/
int state;
if ((can_get_state(if_name_can0, &state)) < 0)
{
fprintf(stderr, “cannot get bustate, “ “something is seriously wrong”);
}
else if (state == CAN_STATE_BUS_OFF)
{
fprintf(stderr, “Device is in BUS_OFF” );
do_restart(“can0”);
}
do_restart(“can0”)的作用是restart can0。