学习目标:Vehicle spy3 functionBlock脚本编程
Vehicle spy3 functionBlock脚本编程,是目前来说比较冷门的一项script语言。
(1)优点:简洁明了,易于上手。它采用了选择模式,先构思好流程图,然后点点点,基本就可以完成任务。
(2)缺点:也因为其简单,所以无法完成较为复杂的功能。
但是随着目前Vehicle spy3工具被越来越多的主机厂和供应商使用,相关的开发测试人员也需要掌握Vehicle spy3 functionBlock脚本编程
学习内容:Vehicle spy3 functionBlock脚本编程应该注意的问题
提示:具体的语法规则,各位可具体查询
Vehicle spy3的内置文档查询,本文,具体总结functionBlock脚本编程应该注意的问题,因为有些工程师本身有一定的编程能力,而functionBlock脚本编程,与其他编程语言不同的地方,需要非常注意:
(1)if 和end if 的配对关系
首先我们看 C语言在使用if语句时,要想实现if判断后,执行多个语句块,就需要使用{},来括起来
if(a==0)
{
Max=a+1;
printf("%d",Max);
}
else
{
Max=a-1;
printf("%d",Max);
}
但是functionBlock没有{}标识符的,假如我们想实现上述功能,应该怎么办?functionBlock
也有自己的语法:
if(a=0) //a是自定义AppSignal
sevalue(b=5) //b是自定义AppSignal
transmit(Message1) //Message1库中已经定义的信息
else if(a>0)
sevalue(b=6)
transmit(Message2)//Message2库中已经定义的信息
endif
endif
if(a=0) //a是自定义AppSignal
sevalue(b=5) //b是自定义AppSignal
transmit(Message1) //Message1库中已经定义的信息
else
sevalue(b=6)
transmit(Message2)//Message2库中已经定义的信息
endif
以上两图,实现的效果一样,都是if和else语句后执行语句超过一;
可以看出,functionBlock中 if语句(包括elseif也要有endif与其匹配)在遇见 endif 和其匹配之前,默认为执行语句块。
此时又有同学,提出问题,如果我们只想执行if(a=0)后的第一条语句,setvalue(b=5)该如何写脚本
if(a=0) //a是自定义AppSignal
sevalue(b=5) //b是自定义AppSignal
endif
transmit(Message1) //Message1库中已经定义的信息
这样if(a=0),执行setvalue(b=5),再顺序执行 transmit(Message1)
if(a!=0),不执行setvalue(b=5),直接跳转到transmit(Message1)
关于if 和endif的配对规则:endif总是向上搜索,与其距离最近的if配对。
(2) wait for相关问题
wait for是functionBlock特有的语句
可以直接输入等待时间,默认单位是s,按下两次"=="便会弹出
即可定制等待时间变量。
(3) 其他注意事项
1:if(a=0) //a是自定义AppSignal,注意看if(a=0),其他语言中都是if(a==0),经过测试发现
functionBlock中使用 “==”会直接报错
修改后,则没问题
2:functionBlock具有自循环的性质,如下图,代码从第一行开始跑->16行(空语句也是语句),然后自动跳转到第一行。所以我们编程时,可以利用这种特点,来简化代码。