Capl编程xml标签语法(2) ——控制语句 if else 和 for循环

本文详细介绍了CAPL编程中XML标签的使用,包括TestModule、TestGroup、TestCase的结构,以及ifelse和for、while循环的语法和应用实例。在条件语句中展示了如何根据信号值调用caplfunction,同时提供了for和while循环的示例代码及其执行结果。文章旨在帮助读者深入理解CAPL XML控制语句的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🌎相关文章


🌎前言

  • 🍅 这一节我们再来探讨下,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了,循环立马跳出来了:

在这里插入图片描述

请添加图片描述
23

🌎总结

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩 有微信的小伙伴可以关注下浪哥车载诊断,一个行业内小小圈子,群里有网盘资料源码还有各路大神 闲时交流交流技术,聊聊工作机会啥的。

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值