socketcan Candump - 如何扩展 CAN ID?

问题描述

我想将车辆的 CAN 数据接收到 CAN 套接字并将其发送到服务器。 (原始数据)

因此,CAN ID 在对发送到服务器的原始数据进行后处理时非常重要。 Candump和wireshark接收到的CAN数据ID只有3位,很难分辨是哪一个数据。 比如虽然我需要接收的CAN ID是0x1f532d10,但是socketcan只接收到d10并显示出来。

有没有办法把ID长度作为一个整体来获取

candump

解决方法

如果您使用 SocketCAN 来发送帧,您需要在 can_frame 结构体的 can_id 字段中设置“扩展帧格式”位,例如:

frame.can_id |= CAN_EFF_FLAG;