CAPL语法
counter = counter+1;
if (counter==256)
{
counter=0;
stop();
}
注释
// 放置在需要注释的语句之前,注释单行
/* 注释起始符,其后的内容被注释
*/ 注释结束符,结束由‘/*’开始的注释
分号
“;” 程序结束标识
大括号
“{}” 函数体
TestModule启动测量向Write Window输出字符串
右键System -> New Event Handler -> 在事件型列表中找到on start
代码实现如下:
variables
{
msTimer cycTimer;
}
on start
{
write("start Node A");
setTimer(cycTimer,20);
CallAllOnEnvVar(); // CANoe only
}
如上在CANoe启动后即会在Write窗口上打印出 "start Node A"。
Write Window窗口
在键盘上按下键‘h’,然后在Write窗口输出“你已按下键盘字符h”和“write窗口输出字符f = 123”
float f=123;
on key 'h'
{
write("你已经下键盘字符h");
write("write窗口输出字符f = %f",f);
}
键盘触发字符
键盘事件 | 说明 |
on key ‘a’ | 按‘a’键反应 |
on key ‘ ’ | 按空格键反应 |
on key 0x20 | 按空格键反应 |
on key F1 | 按F1键反应 |
on key Ctrl-F12 | 按Ctrl + F12键反应 |
on key PageUP | 按PageUp键反应 |
on key Home | 按Home键反应 |
on key * | 按所有键反应 |
定时器触发函数
定时器声明
msTimer myTimer; //将myTimer 申明ms为单位的变量
timer myTimer; //将myTimer 申明s为单位的变量
定时器函数
setTimer(myTimer,100); //将定时值设定为100ms,并启动
cancelTimer(myTimer); //停止定时器myTimer
定时器事件
on timer myTimer //对myTimer 设定的时间到反应
variables
{
msTimer cycTimer;
message * cycmsg;
}
on timer cycTimer
{
output(cycmsg);
}
按下‘+’周期报文EngineData中的信号EngineSpeed值增加100
variables
{
msTimer cycTimer;
message MotorData cycmsg;
}
on timer cycTimer
{
output(cycmsg);
}
on start
{
setTimer(cycTimer,100);
}
on key '+'
{
cycmsg.temperature.phys = 60;
cycmsg.EngineSpeed.phys += 100;
}
按下‘-’周期报文EngineData中的信号EngineSpeed值减少100
on key '-'
{
cycmsg.temperature.phys = 60;
cycmsg.EngineSpeed.phys -= 100;
}
CAPL中报文类型结构
message * sendmsg;
名称 | 说明 |
ID | 报文标识符 |
CAN | 对应的CAN通道号 |
DLC | 数据场长度代码(0~8) |
DIR | 报文方向,TX,RX |
RTR | 远程传输请求:0(数据),1(远程帧) |
TYPE | 报文类型(RXDATA.TXDATARXREMOTE.TXREMOTE...) |
TIME | 时戳,单位10ms |
TIME NS | 时戳,单位ns第x个字节报文中的信号 |
Byte(x) | 报文中的第x个字节 |
signal | signal.phys = vaue;signal.raw = 原始值 |