2016-08-17 198 views
1

我在Vector Canoe CAPL中聲明和初始化struct時遇到了問題。我已經知道來自C/C++的結構,但看起來CAPL中的聲明有點不同。CANoe CAPL結構初始化

矢量幫助功能並沒有真正揭示。

我有一些CAN ID(例如0x61A)。每個CAN ID是分配不同數量的信號ID(例如0xDDF6)。我想從CAN ID中讀出週期性的Signal ID,並計劃在一個令人費解的struct中組織這個。

我已經嘗試過不同類型的聲明和初始化,但每次遇到解析錯誤。

你能幫我解決我的問題嗎? 不像struct不像其他想法來組織我的價值觀?

謝謝!

+0

請顯示您到目前爲止所嘗試的內容。 – sergej

+0

什麼是錯誤信息? – sergej

回答

1

從CAPL文檔:

結構類型可以在CAPL以類似的方式到C聲明...

...他們只可以在CAPL程序與版本CANoe的使用7.0服務包3.

實施例:

variables 
{ 
    /* declarating a struct */ 
    struct MyData { 
    int i; 
    float f; 
    }; 
} 

on start 
{ 
    /* defining a struct variable and initiliazing the elements */ 
    struct MyData data = { 
    i = 42, 
    f = 1.32 
    }; 

    /* accessing the struct elements */ 
    write("i=%d, f=%f", data.i, data.f); 
} 

輸出:

i=42, f=1.320000 
1

我有一個缺陷在struct訪問。試圖在變量聲明例程中初始化struct參數,而不是在on start例程中。

工作代碼爲我的多個數據訪問是現在:

variables 
{ 
    struct Veh_Database 
    { 
    dword ECU; 
    dword ParamID[8][2]; 
    }; 
    struct Veh_Database ECU_Info[12]; 
} 

on start 
{ 
    ECU_Info[0].ECU = 0x1A; 
    ECU_Info[0].ParamID[0][0] = 0xDD;  
    ECU_Info[0].ParamID[0][1] = 0xF6; 
    /* ... */ 
    ECU_Info[1].ECU = 0x12; 
    ECU_Info[1].ParamID[0][0] = 0xDE; 
    ECU_Info[1].ParamID[0][1] = 0x9C; 
    /* ... */ 
} 

感謝您的幫助!