CAPL是CAN匯流排訪問編程語言,在汽車電子開發中運行十分廣泛,類似C語言,同時是基於事件建模的語言,事件類型包含三種:
CAPL時間類型可以從一張表格清楚表示,圖片素材來源網路
1. 和時間相關用法
on timer myTimer //表示對myTimer設定的時間到反應
msTimer myTimer; //聲明瞭一個ms定時器,定時單位是毫秒
定時器設置:
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中數據類型
無符號
有符號
浮點型
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完整結構
通常可由三部分組成