你好的StackOverflow社区CAN-BUS通信 - MSG-结构(WINUSER.H)的Linux相当于
我搜索了好一阵子,但现在我不觉得我的问题的解决方案。 我正在开发一个项目,我必须将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方法,但我没有找到Linux的等同于“味精”一个。我在包含文件'WinUser.h'的Windows工具中找到了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平台上?我唯一发现的是如何创建Message Queue,但我不知道这对我有什么帮助?
谢谢您的时间
问候 亚历
发布代码中的'MSG'甚至不是一个类型名称 - 它是一个宏参数名称。它可能是'x'。 –
我知道这件事。问题是,当我右键点击'MSG'来检查'MSG'的定义时,我被重定向到确切的那个我在WinUser头文件中发布的CodeSnippet。因此,我假设这两者之间肯定存在关系。我真的需要这个宏吗?是不是比调用CanWriteCB函数而不是宏更复杂?或者如果我这样做,整个项目会被搞砸吗? – ZanderEso
您的IDE误导了您。您不应该试图获取MSG的定义 - 它只是一个宏观参数名称。这不是一种类型,它没有定义。 –