🌎相关文章
🌎前言
- 🍅 这一节我们再来探讨下,xml 控制语句
- 🌳测试软硬件环境:
- Win10 x64
- CANoe 11 SP2 x64
🌎判断语句 if else
- 1️⃣ CAPL XML 的 逻辑判断是
Choice
,语法如下图:
- 2️⃣ 在XML TEST NODE中加载如下的 xml 文件:
下面测试代码实现的功能逻辑是,通过choice
关键字,确定进行判断的symbol
,比如这里判断信号RLCR_1_SysSt
- 当 信号
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>
- 3️⃣ 测试结果如下图:
- 信号
RLCR_1_SysSt = 0
,在报告中打印signal is Off
- 信号
RLCR_1_SysSt = 1
,在报告中打印signal is On
🌎 在条件语句中调用 capl function
- 1️⃣ 用
varset_bycapl
标签包裹capl function
,当满足条件后,去执行capl中的函数
<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>
- 2️⃣ 上面代码的详细解释
- 3️⃣ 测试结果如下:
🌎 循环控制语句for
- 1️⃣CAPL XML 的
for
循环,语法如下图:
- 2️⃣ 下面代码是循环打印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>
- 3️⃣ 看下测试结果
🌎 循环控制语句While
- 1️⃣ CAPL XML 的
While
循环,语法如下图:
-
2️⃣
xm
脚本和测试逻辑如下: -
信号 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>
- 3️⃣ 测试结果如下,当RLCR_1_BlkSts 等于1了,循环立马跳出来了:
🌎总结
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 🚩 有微信的小伙伴可以关注下浪哥车载诊断,一个行业内小小圈子,群里有
网盘资料
,源码
,还有各路大神
闲时交流交流技术,聊聊工作机会啥的。
- 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。