CAPL程式設計基礎
CAPL是CAN匯流排訪問程式語言,在汽車電子開發中執行十分廣泛,類似C語言,同時是基於事件建模的語言,事件型別包含三種:
匯流排事件
屬性事件
時間時間
CAPL時間型別可以從一張表格清楚表示,圖片素材來源網路
1. 和時間相關用法
on timer myTimer //表示對myTimer設定的時間到反應
msTimer myTimer; //聲明瞭一個ms定時器,定時單位是毫秒
timer myTimer; //聲明瞭一個以秒為單位的定時器;
定時器設定:
setTimer(myTimer,20); //將定時器設定為20ms,並啟動myTimer函數里的動作一次
setTimerCyclic(myTimer,1); //設定定時器myTimer為一個1s為週期的迴圈定時器;
cancelTimer(myTimer); //停止定時器myTimer
需要執行該時間時間的函式寫法:
myTimer
{
tester。dlc =8;
tester。byte(0) = 0x02;
tester。byte(1) = 0x10;
tester。byte(2) = 0x03;
tester。byte(3) = 0x00;
tester。byte(4) = 0x00;
tester。byte(5) = 0x00;
tester。byte(6) = 0x00;
tester。byte(7) = 0x00;
output(tester);
}
2. 訊息鍵盤事件
on message 0x7E0 //監測到0x7E0報文的反應
on message UDSReqeust // 對UDSRequest反應
on message CAN1。123 // 對CAN1通道收到報文123的反應
on message * //對所有訊息的反應
on message 0x7E0-0x7E8 //對0x7E0-0x7E8 之間報文的反應
on key‘F’ // 按鍵盤F時觸發動作
on key Ctrl-F1 //按Ctrl+F1 觸發動作
對於以上兩種事件型別是常用到的功能,能滿足絕大部分需求。
3. CAPL中資料型別
無符號
byte (1個位元組)
word (2個位元組)
dword(4個位元組)
有符號
int (2個位元組)
long (4個位元組)
浮點型
float
double
4. 訊息的申明
message 0x7E0 i14229_extend;
如果鍵盤時間出傳送報文
on key ‘a’
{
i14229_extend。dlc = 8; //表示長度
i14229_extend。byte(0) = 0x02; //第0個
i14229_extend。byte(1) = 0x10;
i14229_extend。byte(2) = 0x03;
i14229_extend。byte(3) = 00;
i14229_extend。byte(4) = 00;
i14229_extend。byte(5) = 00;
i14229_extend。byte(6) = 00;
i14229_extend。byte(7) = 00;
output(i14229_extend); //傳送該報文
}
如果接收到則作出反應併發出另一幀
on message 0x7E8
{
//extend session
if((this。BYTE(1) == 0x50) || (this。BYTE(2) == 0x03))
{
i14229_seca。dlc = 8;
i14229_seca。byte(0) = 0x02;
i14229_seca。byte(1) = 0x27;
i14229_seca。byte(2) = 0x01;
i14229_seca。byte(3) = 00;
i14229_seca。byte(4) = 00;
i14229_seca。byte(5) = 00;
i14229_seca。byte(6) = 00;
i14229_seca。byte(7) = 00;
output(i14229_seca);
}
}
5. CAPL完整結構
通常可由三部分組成
定義全域性變數
事件過程
自定義函式塊