Hello 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。我在包含文件' 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平台上实现这种结构吗?我发现的唯一一件事是如何创建一个消息队列,但我不知道这对我有什么帮助呢?
感谢您的时间
祝你好运 亚历
答案 0 :(得分:0)
您提到的MSG是一个宏参数,与struct tagMSG
完全无关。
Linux使用SocketCAN支持CAN,它实现了CAN总线的套接字接口,并支持各种硬件设备。最接近CAN消息结构的是struct can_frame
。