gpt4 book ai didi

可以socket printf格式

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:33 25 4
gpt4 key购买 nike

我在显示我的 CAN ID 时遇到问题。我正在通过 ID 为 0x18FF11F3 的 CAN 总线发送消息。我的程序收到此消息以及所有数据字段,只是 ID 不完全匹配

    void set_can_listener(uint16 *s16_Socket, struct can_frame *Frame) {
/* Create the socket */
*s16_Socket = socket(PF_CAN, SOCK_RAW, CAN_RAW);

/* Locate the interface you wish to use */
struct ifreq t_Ifr;
strcpy(t_Ifr.ifr_name, "can0");
ioctl(*s16_Socket, SIOCGIFINDEX, &t_Ifr); /* Ifr.ifr_ifindex gets filled with that device's index*/

/* Select that CAN interface, and bind the socket to it.*/
struct sockaddr_can t_Addr;
t_Addr.can_family = AF_CAN;
t_Addr.can_ifindex = t_Ifr.ifr_ifindex;
bind(*s16_Socket, (struct sockaddr*) &t_Addr, sizeof(t_Addr));
}


void can_listener(uint16 *s16_Socket, struct can_frame *Frame) {
/* Read message from CAN */
unsigned int i;
uint16 s16_BytesRead = read(*s16_Socket, Frame, sizeof(*Frame));
if (s16_BytesRead >= 0) {
printf("\nMessage received!\nID: 0x%X\nDLC: %X\n", Frame->can_id,
Frame->can_dlc);
}
}

我的输出看起来像:

Message received! 
ID: 0x98FF11F3
DLC: 8

最佳答案

您正在使用 CAN_EFF_FLAG 过滤器集读取 ID,定义为

#define CAN_EFF_FLAG 0x80000000U

HERE

代码没问题,收到的消息也没有问题。发送方在套接字上启用了 EFF 过滤器。

THIS链接可以为您解释所有关于SocketCAN

关于可以socket printf格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034119/

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