分享

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

 ghostvip 2022-09-17 发布于广东

🌎相关文章


🌎前言

  • 🍅 这一节我们再来探讨下,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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多