HMI逻辑语句

注意

所有的逻辑语句只能在上位编辑状态下写入控件的事件中,不支持串口传输逻辑语句。

所有的判断语句都不支持多余空格,添加进任何空格,编译都会报错

if语句

if-示例1:

如果password.txt等于”123456”那么就切换到admin页面

1if(password.txt=="123456")
2{
3   page admin
4}
../_images/hmi_logic_2.jpg

if-示例2:

如果t0.txt不等于”a”也不等于b”那么就切换到页面1

1if(t0.txt!="a"&&t0.txt!="b")
2{
3   page 1
4}
../_images/hmi_logic_3.jpg

if-示例3:

如果 10 < n0.val ≤ 100 那么就切换到页面1

1if(n0.val>10&&n0.val<=100)
2{
3   page 1
4}
../_images/hmi_logic_4.jpg

if-示例4:

以下语句写在b0按钮的按下事件中将实现b0的txt内容在开始和停止之间来回切换

1if(b0.txt=="开始")
2{
3   b0.txt="停止"
4}else
5{
6   b0.txt="开始"
7}
../_images/hmi_logic_5.jpg

if-示例5:

以下语句写在b0按钮的按下事件中将实现b0的txt内容在1,2,3之间来回切换

 1if(b0.txt=="1")
 2{
 3   b0.txt="2"
 4}else if(b0.txt=="2")
 5{
 6   b0.txt="3"
 7}else
 8{
 9   b0.txt="1"
10}
../_images/hmi_logic_6.jpg

注意

1.数值类型变量支持:

大于 >

小于 <

等于 ==

不等于 !=

大于等于 >=

小于等于 <=

2.字符串类型仅支持:

等于 ==

不等于 !=

3.if判断的时候不支持括号优先级,比如:if((t0.txt==”a”||t0.txt==”b”)&&t1.txt==”1”)这样是不支持的。

4.if判断的时候不允许出现运算,比如:if(n0.val+2==3)这样是不支持的,请提前用中间变量计算好,再在if中判断

5.不要出现多余的空格,会导致编译时报错

../_images/hmi_logic_1.jpg

while语句

while-示例1:

n0.val一直自加到100为止,在自加过程中屏幕不会刷新显示,直到整个过程所有语句结束

1while(n0.val<100)
2{
3   n0.val++
4}
../_images/hmi_logic_7.jpg

while-示例2:

while提前退出循环

 1sys0=va0.id
 2whileflag=1
 3while(sys0<100&&whileflag==1)
 4{
 5   sys0++
 6   if(b[sys0].val==1)
 7   {
 8      //提前退出循环
 9      n0.val=sys0
10      whileflag=0
11   }
12}
../_images/hmi_logic_8.jpg

while-示例3:

n0.val一直自加到100为止,在自加过程中屏幕会一直不断的刷新n0控件的显示

注意

1.在一个较多指令的过程执行中,或者在一个较长时间的循环语句中,系统所有控制权被此过程全部占用,在过程结束之前,尽管相应的内存数据可以任意正常读写,但是屏幕不会刷新显示,加入doevents后可以转让控制权给屏幕刷新,执行doevents之后,屏幕会刷新所有被改变过的控件,刷新完之后,控制权交回当前过程继续执行。防止屏幕呈现假死的显示状态。

2.while语句循环过程中,设备不会响应触摸事件,串口指令会接收到缓冲区,但不会执行,直到当前过程所有语句执行完毕为止,请慎重使用,以防进入死循环。

1while(n0.val<100)
2{
3   n0.val++
4   doevents
5}
../_images/hmi_logic_9.jpg

for语句

for-示例1:

n0.val一直自加到100为止,在自加过程中屏幕不会刷新显示,直到整个过程所有语句结束

1for(n0.val=0;n0.val<100;n0.val++)
2{
3   //需要循环100次的代码
4}
../_images/hmi_logic_10.jpg

for-示例2:

满足条件后退出for循环

 1 for(sys0=n0.id;sys0<n19.id;sys0++)
 2 {
 3   if(b[sys0].val!=0)
 4   {
 5      //如果需要记录这个不为零的值,可以将它赋值给另一个变量
 6      sys1=sys0
 7
 8      //使其不满足条件退出循环
 9      sys0=100
10   }
11 }
../_images/hmi_logic_11.jpg

for-示例3:

n0.val一直自加到100为止,在自加过程中屏幕会一直不断的刷新n0控件的显示

注意

1.在一个较多指令的过程执行中,或者在一个较长时间的循环语句中,系统所有控制权被此过程全部占用,在过程结束之前,尽管相应的内存数据可以任意正常读写,但是屏幕不会刷新显示,加入doevents后可以转让控制权给屏幕刷新,执行doevents之后,屏幕会刷新所有被改变过的控件,刷新完之后,控制权交回当前过程继续执行。防止屏幕呈现假死的显示状态。

2.for语句循环过程中,设备不会响应触摸事件,串口指令会接收到缓冲区,但不会执行,直到当前过程所有语句执行完毕为止,请慎重使用,以防进入死循环。

1for(n0.val=0;n0.val<100;n0.val++)
2{
3   //需要循环100次的代码
4   doevents
5}
../_images/hmi_logic_12.jpg