你好StackOverflow社区
我已经找了很长一段时间了,但我找不到解决问题的办法。我现在正在做一个项目,我必须将Windows工具移植到Linux操作系统(具体而言,是Ubuntu12.04LTS)。基于Windows的工具是用C++编写的,因此我试图在Linux上用C++重写该工具。我目前面临的问题是,在Windows解决方案中,有一部分使用“MSG”。在这里,来自Windows解决方案的代码片段:
/** Callback to send CAN message */
#define CB_SEND_MSG( MSG ) CanWriteCB( MSG )我已经实现了CanWriteCB方法,但没有找到等同于'MSG‘的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平台上实现这种结构吗?我发现的唯一一件事是如何创建消息队列,但我不知道这对我有什么帮助?
谢谢您抽时间见我
向亚历克斯问好
发布于 2015-06-08 18:43:33
您提到的MSG是一个宏参数,与struct tagMSG完全无关。
Linux支持使用SocketCAN实现CAN总线的套接字接口,支持各种HW设备。最接近CAN消息结构的是struct can_frame。
https://stackoverflow.com/questions/30302868
复制相似问题