CAPL就是Communication Application Programming Laguage的縮寫,CAPL類似於C語言的語法,因此所有的語法請參考C語言教程,這里不在這里進行詳述,關於C語言,毫無疑問的,首先推薦大家看譚浩強老師的書,經典中的經典,看完這本C語言應該沒問題了。CAPL在CANoe中起到重要的作用,他將所有的部分聯系起來(請看下圖)現在我們給予上一節的基礎上,來着重介紹CAPL編程。
CAPL語法是C語言的,又有一些C++的特性,this指針,事件等,對於事件的理解可以學習任意一種面對對象語言,首推C#.NET,可以參考我的博客學習,當然這個似乎比CAPL本身更加難,事件也更加多,但這並不妨礙對事件的理解,其中的事件類型如下圖:
下面來幾個小例子幫助理解
來個CANoe版本的hello world!來興奮一小下吧。開整~
在打開CANoe,新建個工程,在Simulation Setup中加個Network node ,點鉛筆,忘了嗎,上一節剛講過,右鍵Start->New,鍵入如下代碼
編譯后,關閉CAPL Brower。運行CANoe工程,結果如下,哇塞成功咯,好有成就感啊。
這個例子似乎跟CAN通訊沒啥太大關系啊,好,我們接下來再做一個例子
運行結果如下,按鍵盤b鍵,將發送一個CAN消息,連dlc是啥都不知道的同學,推薦先學習一下CAN基礎知識,推薦瑞薩公司的《CAN入門書》,講的非常的好。
運行剛剛的那個例子你會發現,按一下b,只發送一條消息,但在實際應用中CAN消息都是循環連續發送的,我們要對剛剛的程序進行一些修改。完成這樣的功能。程序如下:
variables
{
message 0x400 msgA = {dlc=1};
mstimer timerA;
int conditionA = 0;
}
on key 'a'
{
conditionA = !conditionA;
if(conditionA ==1)
{
setTimer(timerA,200);
}
}
on timer timerA
{
if(conditionA==1)
{
setTimer(timerA,200);
}
msgA.byte(0) = msgA.byte(0)-1;
output(msgA);
}
運行結果如下:按A鍵,Timer啟動,發送消息
接下來我們一起來看總結一下CAPL編程的要點:
CAPL編程的學習,需要通過不斷在實踐中的積累,此外別無他法。以上真真兒的只是入門,如果你真心看過,不如你真心寫過。