首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Can总线通信.MSG-结构(WinUser.h)

Can总线通信.MSG-结构(WinUser.h)
EN

Stack Overflow用户
提问于 2015-05-18 12:10:03
回答 1查看 789关注 0票数 1

你好StackOverflow社区

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

代码语言:javascript
复制
/** Callback to send CAN message */
#define CB_SEND_MSG( MSG )          CanWriteCB( MSG )

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

代码语言:javascript
复制
/*
 * 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‘方法的实现:

代码语言:javascript
复制
boolean_t CanWriteCB( Can_Msg *msg )
{
    return (CanDispatcher_SendMsgByCanBus( msg ) == CanDisp_Err_Ok ) ? TRUE : FALSE;
}

const Det_Config detCfg = 
{
WriteDebugErrorData
};

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

谢谢您抽时间见我

向亚历克斯问好

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-08 18:43:33

您提到的MSG是一个宏参数,与struct tagMSG完全无关。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30302868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档