CAN-BUS通信-MSG结构(Winuser.h)Linux等效

Can-Bus Communication - MSG-Structure (WinUser.h) Linux equivalent

本文关键字:Linux 等效 Winuser 通信 -MSG 结构 CAN-BUS      更新时间:2023-10-16

你好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平台上实现此结构吗?我唯一发现的是如何创建消息队列,但我不知道这将如何帮助我?

谢谢您的时间

最好的问候Alex

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

Linux可以使用SocketCan支持can Bus的套接字接口,并支持各种HW设备。最接近消息结构的东西是struct can_frame