gpt4 book ai didi

c - 使用cantools生成C文件

转载 作者:行者123 更新时间:2023-11-30 16:20:03 28 4
gpt4 key购买 nike

我在Python中使用cantools来解码从socketcan读取的一些CAN消息。在 python 中,我可以从套接字读取消息并简单地使用以下命令对其进行解码:

message = can_bus.recv()
decoded_msg = db.decode_message(msg.arbitration_id, msg.data)

其中 can_bus 是套接字,db 是 dbc 加载的文件。现在我已经从 .dbc 文件开始生成了 C 文件 .h 和 .c。如何使用自动生成的文件解码以 C 语言接收的 CAN 消息?我可以用这种方式从套接字读取消息(用 C 语言):

nbytes = read(s, &frame, sizeof(struct can_frame));

其中 s 是套接字,frame 是存储接收到的帧的位置。如何使用 .h 和 .c 自动生成的文件解码接收到的帧?

最佳答案

cantools 生成名为 ..._unpack 的函数。

它们的第二个参数称为src_p。这是您放置接收到的字节的地方。

假设您正在使用 Linux 的 CAN 网络层,您的代码将类似于

struct my_message myMessage;
my_message_unpack(&myMessage,
can_frame.data,
can_frame.can_dlc);

这将填充结构myMessage

在大多数情况下,您必须解码该结构的各个成员,即将原始(二进制)表示形式转换为符号值。这可以通过使用 cantools 生成的 ..._decode 函数来完成。

关于c - 使用cantools生成C文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55418695/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com