【CAPL】代码思路和语法格式等的灵感tips
CAPL代码流程
语法格式
输出write()
write()函数支持同时输出变量和字符串常量- 直接按输出顺序用逗号分隔即可,不需要特殊的格式符(如 C 语言的%d、%s)
-
常见规则:
- 分隔符:变量和字符串之间必须用逗号(,) 分隔,不能用加号(+)拼接
- 自动转换:write()会自动将变量(数字、布尔等)转换为字符串格式输出
- 空格补充:逗号分隔的元素之间会自动添加一个空格
- 示例:
write("时间:", t, "ms,模式:", mode); // 输出:时间:150 ms,模式:1 -
write()函数对首个参数的隐性限制: 最好以字符串开头
- 即使是空字符串,也能避免莫名的错误:
write("",timeNow(), ": 启动了!"); - 如以数字开头会报错:
write(timeNow(), ": 启动了!");
- 即使是空字符串,也能避免莫名的错误:
-
snprintf()函数拼接后输出:避免write()参数解析问题
- dword类型放在write()中时:
- 当dword类型与字符串拼接时,若数值过大或格式不兼容,可能导致后续参数被截断。
- 示例:
write("111",timeNow(),"启动了!");//输出只有111,没有后面的timeNow()和启动了
- snprintf格式:
int snprintf(char buf[], int bufSize, char format[], ...); - 示例:
char startout[100]; startTime = timeNow(); snprintf(startout,100,"开始时间 %lu :开始检测",startTime); write(startout);
- dword类型放在write()中时:
终止定时器:cancelTimer(定时器名); 和return;
- cancelTimer确保定时器不再触发
- return确保当前函数不再继续执行
- 需要立即终止定时器 + 终止当前函数:cancelTimer(定时器名); return;
- (如超时退出、条件满足后彻底结束流程的场景)
- 需要终止定时器,但要继续执行后续代码:仅cancelTimer(定时器名);
- (如完成任务后需要清理资源、记录日志的场景)
- 代码示例:
on timer checkTimer { if(elapsed >= detectTime) //达到预期的阈值后,立即停止定时器,并结束后续代码 { write("200ms检测结束"); cancelTimer(checkTimer); return; } //其他判断的代码 }
获取时间函数 timeNow()
- 作用:表示当前CANoe模拟运行持续的时间,即闪电开始运行的持续时间
- 一般用于计算时间差
- 格式:
dword timeNow()- 单位:10微妙,eg,1s后,输出当前时间的值为100000
- 代码示例:
float x;x = timeNow()/100000.0; //单位:seconds
功能选取和使用
键盘触发 on key xxx
- 区分大小写


浙公网安备 33010602011771号