CAPL是CAN匯流排訪問程式語言,在汽車電子開發中執行十分廣泛,類似C語言,同時是基於事件建模的語言,事件型別包含三種:

匯流排事件

屬性事件

時間時間

CAPL時間型別可以從一張表格清楚表示,圖片素材來源網路

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完整結構

通常可由三部分組成

定義全域性變數

事件過程

自定義函式塊

CAPL程式設計基礎