gpt4 book ai didi

c++ - CAN 总线通信 - MSG 结构 (WinUser.h) Linux 等价物

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:59 36 4
gpt4 key购买 nike

你好 StackOverflow 社区

我已经搜索了很长时间,但没有找到解决我的问题的方法。我现在正在做一个项目,我必须将 Windows 工具移植到 Linux 操作系统(具体来说是 Ubuntu 12.04LTS)。基于 Windows 的工具是用 C++ 编写的,因此我试图在 Linux 上用 C++ 重写该工具。我现在面临的问题是,在 Windows 解决方案中有一部分使用了“MSG”。这是来自 Windows 解决方案的代码片段:

/** Callback to send CAN message */
#define CB_SEND_MSG( MSG ) CanWriteCB( MSG )

我已经实现了 CanWriteCB 方法,但我没有找到与“MSG”等效的 Linux。我在 Windows 工具的包含文件“WinUser.h”中找到了 MSG 的声明。这看起来如下:

/*
* Message structure
*/
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
#ifdef _MAC
DWORD lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

我不知道它是否对你有帮助,但这里也是'CanWriteCB'方法的实现:

boolean_t CanWriteCB( Can_Msg *msg )
{
return (CanDispatcher_SendMsgByCanBus( msg ) == CanDisp_Err_Ok ) ? TRUE : FALSE;
}

const Det_Config detCfg =
{
WriteDebugErrorData
};

有人知道如何在 Linux 平台上实现这种结构吗?我唯一发现的是如何创建消息队列,但我完全不知道这对我有什么帮助?

谢谢你的时间

最好的问候亚历克斯

最佳答案

你说的MSG是一个宏参数,和struct tagMSG完全没有关系。

Linux 使用 SocketCAN 支持 CAN实现了CAN总线的socket接口(interface),支持各种HW设备。最接近 CAN 消息结构的是 struct can_frame

关于c++ - CAN 总线通信 - MSG 结构 (WinUser.h) Linux 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302868/

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