CANoe中XML编程常用标签语法 ——控制语句 if else 和 for循环
Posted 蚂蚁小兵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CANoe中XML编程常用标签语法 ——控制语句 if else 和 for循环相关的知识,希望对你有一定的参考价值。
相关文章
前言
- 这一节,我们简单了解下
XML
中的流程控制语法if else
和for
循环
if else
①,CAPL XML 的 逻辑判断是Choice
,语法如下图:
②,在XML TEST NODE中加载如下的 xml 文件:
下面测试代码实现的功能逻辑是:
- 当 信号
RLCR_1_SysSt = 0
,在报告中打印signal is Off
- 当 信号
RLCR_1_SysSt = 1
,在报告中打印signal is On
- 当 信号
RLCR_1_SysSt = other
,在报告中打印signal is unexpected value
<testmodule title="XML Debug" version="1.1">
<testcase ident="" title="if else test">
<choice title="siganl RLCR_1_SysSt">
<if title="SysSt_Off">
<condition>
<cansignal name="RLCR_1_SysSt"><eq>0</eq></cansignal>
</condition>
<body>
<comment>signal is Off</comment>
</body>
</if>
<if title="SysSt_On">
<condition>
<cansignal name="RLCR_1_SysSt"><eq>1</eq></cansignal>
</condition>
<body>
<comment>signal is On</comment>
</body>
</if>
<else>
<comment>signal is unexpected value</comment>
</else>
</choice>
</testcase>
</testmodule>
③,测试结果如下图:
在xml if else 中调用 capl function
①,用 varset_bycapl
标签包裹 capl function
<testmodule title="XML Debug" version="1.1">
<preparation>
<vardef name="crash" type="int">0</vardef>
</preparation>
<testcase ident="" title="if else test">
<choice title="siganl RLCR_1_SysSt">
<if title="SysSt_Off">
<condition>
<cansignal name="RLCR_1_SysSt"><eq>0</eq></cansignal>
</condition>
<body>
<varset_bycapl name="crash">
<caplfunction name="func1" title="func1"/>
<caplparam name="v" type="int">0</caplparam>
</varset_bycapl>
</body>
</if>
<if title="SysSt_On">
<condition>
<cansignal name="RLCR_1_SysSt"><eq>1</eq></cansignal>
</condition>
<body>
<varset_bycapl name="crash">
<caplfunction name="func2" title="func2"/>
<caplparam name="v" type="int">1</caplparam>
</varset_bycapl>
</body>
</if>
<else>
<comment>signal is unexpected value</comment>
</else>
</choice>
</testcase>
</testmodule>
for 循环
①,CAPL XML 的for
循环,语法如下图:
②,下面代码是循环打印5次 ***:
<testmodule title="XML Debug" version="1.1">
<testcase title="for loop test" ident="">
<preparation>
<vardef name="looptimes" type="int">0</vardef>
</preparation>
<for_loop title="..." loopvar="looptimes" stopvalue="5" startvalue="0" increment="1">
<comment>***********************</comment>
</for_loop>
</testcase>
</testmodule>
While 循环
①,CAPL XML 的While
循环,语法如下图:
②,xml
脚本如下:
- 信号 RLCR_1_SysSt 和 RLCR_1_BlkSts 都为0 ,则进入循环,否则跳出循环 如果是逻辑或 可以用
or
,逻辑与用的就是and
- 默认,执行1000次循环,自动跳出循环,所以加个
wait
标签
<testmodule title="XML Debug" version="1.1">
<testcase ident="" title="While test">
<while_loop title="...">
<condition>
<and>
<cansignal name="RLCR_1_SysSt"><eq>0</eq></cansignal>
<cansignal name="RLCR_1_BlkSts"><eq>0</eq></cansignal>
</and>
</condition>
<body>
<comment>************************************</comment>
<wait title="Wait" time="100ms"/>
</body>
</while_loop>
</testcase>
</testmodule>
③,执行结果如下,当RLCR_1_BlkSts 等于1了,循环立马跳出来了:
总结
这节主要讲了几个CAPL中 XML语法的逻辑控制语法,说实话,我自己在项目中基本没用过,纯属对技术的追求,写下这个博客,有些同学问我 可以在 XML中,循环调用某个test case吗?事实上,我尝试了,不行。但是可以调用 CAPL function.
不足之处,欢迎指正。
- 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
以上是关于CANoe中XML编程常用标签语法 ——控制语句 if else 和 for循环的主要内容,如果未能解决你的问题,请参考以下文章
CANoe中XML编程常用标签语法 —— 变量,系统变量的定义和读取
CANoe中XML编程常用标签语法 —— 变量,系统变量的定义和读取
CANoe中XML编程常用标签语法 ——CAN报文周期检测/错误帧检测/信号改变检测。。。
CANoe中XML编程常用标签语法 ——CAN报文周期检测/错误帧检测/信号改变检测。。。