0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TestStand表达式中常用的语法规则和运算符使用

华穗科技 来源: 华穗科技 2024-08-15 18:10 次阅读

TestStand也有自己的语言?

TestStand也有自己的语言嘛?在回答这个问题之前大家可以想一下在使用TestStand时有一个和语言密切相关的属性。没错那就是表达式(Expressions),在这篇文章中,小编将以Q&A的方式来带着大家来理解并熟悉TestStand表达式中较为常用的一些语法规则以及运算符使用。

在了解TestStand语法规则和运算符之前,大家先回忆一下还记得表达式是什么嘛?表达式分为哪几类?

wKgZoma91B2AXkxCAACWfBaqwuc637.jpg

那么根据上面这张图,大家是不是有记起一些呢?除了运行前表达式、运行时表达式、状态表达式,还有步骤中Statement(赋值表达式),Precondition Expression(先决条件表达式)等。表达式起到什么作用、什么时候执行都是有明确的区分的。

本文分享:

Teststand语法

一、算数运算符(Arithmetic)

wKgZoma91B2AOIN4AAKFSpCoQes826.jpg

"+" :加法运算符,需注意的是如果一个操作数是字符串,另一个操作数是数值,操作符会先将字符串转换为数值。如果两个参数都是字符串,则运算符会创建一个新的字符串,新的字符串是将两个字符串的内容连接起来。如果两个参数都是数组,则运算符会创建一个新数组,将两个数组的内容连接起来。运算使用时需要注意数据类型是否一致,举个例子创建Locals.x(数值类型),执行该表达式Locals.x = "3" +5,Locals.y执行结果为8;

"-" :减法运算符,仅适用于数值,实现的就是简单的减法运算。

"*" :乘法运算符,仅适用于数值,实现的就是简单的乘法运算。

"/" :第一个数除以第二个数,仅适用于数值。

"MOD"(Basic syntax) :计算第一个数除以第二个数的余数,适用于整数和实数。

"%"(C/C++/C# syntax):计算第一个数除以第二个数的余数,适用于整数和实数。

"++" :增量运算符,前增量或后增量,将数值增加1,可以放在数值前或数值后。如果将该运算符放在数值之前,则表达式的值为增加1后的新值,反之放在数值之后,则表达式的值为原值。

"--" :减量运算符,使用方法和增量运算符相同。

了解了算数运算符后,想必大家也发现TestStand表达式的语法规则和文本语言十分相像甚至可以说是一模一样,算法运算符在单纯使用方面和文本语言几乎一模一样,那么这里提出一个简单的问题!

Q

Locals.x的值为3,若执行表达式1:Locals.y = ++Locals.x + 10和表达式2:Locals.y = Locals.x++ +10两个表达式的运算结果分别是什么呢?

和文本语言语法规则相同,表达式1在执行后Locals.x的值为4,Locals.y的值为14,表达式2在执行后Locals.x的值为3,Locals.y的值为13。

Q

若要使两个字符串连接起来组成一个新的字符串,类似于LabVIEW中的连接字符串,可以通过何种方法在TestStand中实现呢?

可以使用加法运算符来实现该功能,因为如果运算符前后都是字符串,则会创建一个新的字符串,将两个字符串的内容连接起来,比如Local.x = "a" + "b",执行后Locals.x结果为"ab"。

二、赋值运算符(Assignment)

除了算法运算符,赋值运算符同样和文本语言类似!

wKgaoma91B2Aa1xbAAOCzI6qHCc201.jpg

"=" :对运算符右侧表达式求值,并将运算符左侧的操作数设置为结果。需注意在对容器属性进行操作时,左右两侧的子属性名称的层次结构必须匹配。对于每个属性值,赋值会尽可能在不同数据类型之间进行转换,例如将数值转换为字符串。

"+=" :该运算符实现的是对运算符右侧的表达式求值,并将结果相加到左边的操作数。如果运算符右侧的表达式是字符串,则运算符在将其添加到左侧的操作数之前将其转换为数值。如果两边都是字符串,运算符将右边的字符串连接至左边的字符串。如果两边都是数组,则运算符将右边数组的元素附加到左边数组的末尾。

"-=" :对运算符右侧的表达式求值,并从左侧的操作数中减去作为结果。使用方法和"+="运算符相同。

"*=" :对运算符右侧的表达式求值,并与左侧的操作数相乘作为结果。使用方法和"+="运算符相同。

"/=" :对运算符右侧的表达式求值,并与左侧的操作数相除作为结果。使用方法和"+="运算符相同。

"%=" :对运算符右侧的表达式求值,并与左侧的操作数相除取余作为结果。使用方法和"+="运算符相同。

"^=" :对运算符右侧表达式值和左侧数值执行异或操作后得到的数值作为结果。

"&=" :对运算符右侧表达式值和左侧数值执行与操作后得到的数值作为结果。使用方法和"^="相同。

"|=" :对运算符右侧表达式值和左侧数值执行或操作后得到的数值作为结果。使用方法和"^="相同。

Q

假设Locals.x为10,执行以下表达式Locals.x^= 3 + 2,执行后的结果是多少呢?

执行该表达式Locals.x ^= 3 + 2,即将10(二进制1010)和5(二进制0101)进行异或得到的结果为15(1111)。

三、位运算符(Bitwise)

wKgaoma91B2AViePAALxwiR6kf4940.jpg

"AND"、"&" :计算两个数值的与运算,举个例子Locals.x = 3(0011) AND 6(0110)得到的结果是2(0010)。

"OR"、"|" :计算两个数值的或运算,使用方法和"AND"相同。

"XOR"、"^" :计算两个数值的异或运算,使用方法和"AND"相同。

"<<" :将运算符左边的数值向左移动运算符右边数值的位数。举个列子Locals.x = 3(0011) << 1,得到的结果是6(0110)。

">>" :将运算符左边的数值向右移动运算古右边数值的位数。使用方法和">>"相同。

四、比较运算符(Comparison)

wKgaoma91B2AIarbAAMy-KegrbQ465.jpg

"==" :判断运算符左右两边是否相等,若相等则返回值为True,不相等则返回值为False。如果一个是字符串,另一个是数值,那么运算符会将字符串转换为数值。如果两个都是字符串,则比较不区分大小写。

"!="、"<>" :如果左边操作数和右边操作数不相等,则计算结果为True。适用于字符串、数值和布尔值。使用方法和"=="相同。

">" :如果运算符左边数值大于右边数值,则计算结果为True。适用于字符串、数值和布尔值。该类运算符比较简单,">="、"<"和"<="使用方法都是相同的。

五、逻辑运算符(Comparison)

wKgZoma91B2AUEcGAAJ3CtWjMIk142.jpg

"&&" :逻辑与运算符,如果两个操作数都为True,则计算结果为True。如果第一个操作数为False,则不计算第二个操作数。在应用操作符之前,数值操作数如果非零则转换为True,如果为零则转换为False。如果文本为“True”或包含非零数字的表示形式,则字符串操作数将转换为True,否则为False。

"||" :逻辑或运算符,如果一个或两个操作数为True,则计算结果为True。如果第一个操作数为True,则不计算第二个操作数。使用方法和"&&"相同。

六、其他运算符(Other)

wKgZoma91B2AfDBMAAH_5YuMzyc932.jpg

"( )" :改变求值顺序。

"." :属性字段分隔符。

",(;)" :表达式分隔符,使用逗号来分割传递给表达式函数的参数,用法:,,组合表达式的结果是最后一个表达式也就是的结果。

"? :" :根据布尔表达式的结果,从其他两个表达式中选择一个来求值。用法:booleanValue ? :,其中布尔值可以是一个表达式,如果boolean为True则执行,反之执行

"/* */" :指定分隔符中的字符为注释。

"//" :指定一行上的其余字符为注释。比如Locals.Channel += 1 //Advance to next channel

小编将以一个实际项目上遇到的问题来作为这篇文章的结束!

Q

TestStand能不能通过表达式自定义等待(Wait)时间,比如第一次循环等待10s,然后第二次循环的时候跑到3s序列跑死了,我再重新跑的时候想只跑剩下的7s,这个在不添加步骤的情况下可以通过表达式实现吗?

当然可以,首先我们整理一下应用背景,wait本来需要10s,但是当序列跑死后我们只需要他跑剩余的时间,这里我们简化一下问题使其变得略微简单一些:在一个循环中,当第一次等待时等待3s,第二次等待时等待7s。我们需要在不添加步骤的情况下实现,首先我们要明确我们应该使用哪种表达式,很明显我们用到的是先决条件表达式(Precondition Expression),因为在执行该表达式前我们需要对循环次数进行判断。因此我们需要一个变量Locals.i来保存循环次数,说到这里想必大家都已经有自己的思路和理解了。那我们需要用到的运算符是"? :",那么实现该功能的表达式就已经呼之欲出了:Locals.i < 2 == True ? 3:7,当循环次数<2的时候为True,等待时间为3s,反之则为7s。

七、总结

TestStand中表达式有多种写法,语法规则也不唯一,如果想要实现某个具体算法、逻辑、功能,可以查看本篇文章进行尝试,如果遇到问题或者想实现比较难的算法、逻辑、功能欢迎一起讨论!

以上内容就是本期的全部内容,更多关于测试系统中的实际软硬件应用知识,可关注本公众号/下方合集,敬请期待!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运算符
    +关注

    关注

    0

    文章

    165

    浏览量

    11006
  • TestStand
    +关注

    关注

    4

    文章

    7

    浏览量

    11062
  • 华穗科技
    +关注

    关注

    1

    文章

    11

    浏览量

    65

原文标题:知识分享 | Teststand也有自己的语言?

文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux内核中C语法扩展-语句表达式

    表达式和语句是 C 语言中的基础概念。什么是表达式呢?表达式就是由一系列操作和操作数构成的式子。操作可以是 C 语言标准规定的各种算术
    的头像 发表于 02-17 09:30 2558次阅读

    JAVA语言的运算符表达式

    。3.5.1 表达式表达式是由操作数和运算符按一定语法形式组成的符号序列,以下是合法的表达式例子:a+b 、 (a+b)*(a-b) 、 "
    发表于 12-06 00:28

    数据类型、运算符表达式

    数据类型、运算符表达式2.1   程序设计概述2.2  C语言的数据类型 2.3  常量和变量 2.4 
    发表于 03-10 15:05

    关于C语言的运算符表达式--笔记1

    关于C语言的运算符表达式学好C语言的基础运算,还是很有必要,无论在C语言,还是后面单片机,都会用到基础运算。如果不能很好运用,会给我们编程带来很多麻烦,废话不多说,现在开始写一些个人
    发表于 07-19 00:48

    C语言程序设计--运算符表达式

    c语言对数据有很强的表达能力,具有十分丰富的运算符,利用这些运算符可以组成各种表达式及语句。运算符就是完成某种特定
    发表于 07-14 21:30 46次下载

    单片机C语言教程-运算符表达式

    单片机C语言教程-运算符表达式   单片机C语言教程-运算符表达式  运算符的种类、优先级和结合性  c语言中运
    发表于 03-27 17:13 2172次阅读

    基于运算符信息的数学表达式检索技术

    传统的文本检索技术主要面向一维文本,难以用于对二维结构数学表达式的检索。针对该问题,通过引入公式描述结构,实现基于运算符信息的数学表达式检索。利用公式描述结构提取算法获取 Latex数学表达式
    发表于 04-29 15:58 2次下载
    基于<b class='flag-5'>运算符</b>信息的数学<b class='flag-5'>表达式</b>检索技术

    RTL表达式运算符

    经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式运算符
    的头像 发表于 07-27 09:11 1551次阅读

    SystemVerilog-运算符/表达式规则

    RTL建模中广泛使用的运算符是条件运算符,也称为三元运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条件
    的头像 发表于 08-03 09:03 2789次阅读

    RTL表达式运算符

    经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式运算符
    的头像 发表于 10-11 10:15 1462次阅读

    RTL表达式运算符

    经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式运算符
    的头像 发表于 11-03 09:14 1153次阅读

    运算符/表达式规则

    运算符对操作数执行操作。大多数运算符都有两个操作数。例如,在运算a+b中,+(加法)运算的操作数是a和b。每个操作数都被称为表达式
    的头像 发表于 02-09 15:37 826次阅读
    <b class='flag-5'>运算符</b>/<b class='flag-5'>表达式</b><b class='flag-5'>规则</b>

    逻辑运算符表达式

    在C语言中,我们通常会进行真值与假值的判断,这时我们就需要用到逻辑运算符与逻辑表达式。如果表达式的值不为0,则通通返回为真值。只有当表达式的值为0时,才会返回假值。
    的头像 发表于 02-21 15:16 1799次阅读
    逻辑<b class='flag-5'>运算符</b>与<b class='flag-5'>表达式</b>

    位逻辑运算符表达式

    位逻辑运算符与位逻辑表达式可以实现位的编辑,比如位的清零、设置、取反和取补等操作。使用位逻辑运算符与位逻辑表达式可以在不使用汇编的情况下实现部分汇编的功能
    的头像 发表于 02-21 15:22 1122次阅读
    位逻辑<b class='flag-5'>运算符</b>与<b class='flag-5'>表达式</b>

    C语言基本的算术运算符表达式

    注意:自增和自减运算符只能用于变量,而不能用于常量或表达式 **C语言算术表达式运算符的优先级与结合性 ** 在表达式求值时,
    的头像 发表于 03-09 10:44 1449次阅读