你好的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的定義 - 它只是一個宏觀參數名稱。這不是一種類型,它沒有定義。 –