【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);
      

终止定时器: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

  • 区分大小写

tbd

posted @ 2025-08-08 10:17  anliux  阅读(76)  评论(0)    收藏  举报