HMI逻辑语句
注意
所有的逻辑语句只能在上位编辑状态下写入控件的事件中,不支持串口传输逻辑语句。
所有的判断语句都不支持多余空格,添加进任何空格,编译都会报错
if语句
if-示例1:
如果password.txt等于”123456”那么就切换到admin页面
if(password.txt=="123456")
{
page admin
}

if-示例2:
如果t0.txt不等于”a”也不等于b”那么就切换到页面1
if(t0.txt!="a"&&t0.txt!="b")
{
page 1
}

if-示例3:
如果 10 < n0.val ≤ 100 那么就切换到页面1
if(n0.val>10&&n0.val<=100)
{
page 1
}

if-示例4:
以下语句写在b0按钮的按下事件中将实现b0的txt内容在开始和停止之间来回切换
if(b0.txt=="开始")
{
b0.txt="停止"
}else
{
b0.txt="开始"
}

if-示例5:
以下语句写在b0按钮的按下事件中将实现b0的txt内容在1,2,3之间来回切换
if(b0.txt=="1")
{
b0.txt="2"
}else if(b0.txt=="2")
{
b0.txt="3"
}else
{
b0.txt="1"
}

注意
1.数值类型变量支持:
大于 >
小于 <
等于 ==
不等于 !=
大于等于 >=
小于等于 <=
2.字符串类型仅支持:
等于 ==
不等于 !=
3.if判断的时候不支持括号优先级,比如:if((t0.txt==”a”||t0.txt==”b”)&&t1.txt==”1”)这样是不支持的。
4.if判断的时候不允许出现运算,比如:if(n0.val+2==3)这样是不支持的,请提前用中间变量计算好,再在if中判断
5.不要出现多余的空格,会导致编译时报错

while语句
while-示例1:
n0.val一直自加到100为止,在自加过程中屏幕不会刷新显示,直到整个过程所有语句结束
while(n0.val<100)
{
n0.val++
}

while-示例2:
while提前退出循环
sys0=va0.id
whileflag=1
while(sys0<100&&whileflag==1)
{
sys0++
if(b[sys0].val==1)
{
//提前退出循环
n0.val=sys0
whileflag=0
}
}

while-示例3:
n0.val一直自加到100为止,在自加过程中屏幕会一直不断的刷新n0控件的显示
注意
1.在一个较多指令的过程执行中,或者在一个较长时间的循环语句中,系统所有控制权被此过程全部占用,在过程结束之前,尽管相应的内存数据可以任意正常读写,但是屏幕不会刷新显示,加入doevents后可以转让控制权给屏幕刷新,执行doevents之后,屏幕会刷新所有被改变过的控件,刷新完之后,控制权交回当前过程继续执行。防止屏幕呈现假死的显示状态。
2.while语句循环过程中,设备不会响应触摸事件,串口指令会接收到缓冲区,但不会执行,直到当前过程所有语句执行完毕为止,请慎重使用,以防进入死循环。
while(n0.val<100)
{
n0.val++
doevents
}

for语句
for-示例1:
n0.val一直自加到100为止,在自加过程中屏幕不会刷新显示,直到整个过程所有语句结束
for(n0.val=0;n0.val<100;n0.val++)
{
//需要循环100次的代码
}

for-示例2:
满足条件后退出for循环
for(sys0=n0.id;sys0<n19.id;sys0++)
{
if(b[sys0].val!=0)
{
//如果需要记录这个不为零的值,可以将它赋值给另一个变量
sys1=sys0
//使其不满足条件退出循环
sys0=100
}
}

for-示例3:
n0.val一直自加到100为止,在自加过程中屏幕会一直不断的刷新n0控件的显示
注意
1.在一个较多指令的过程执行中,或者在一个较长时间的循环语句中,系统所有控制权被此过程全部占用,在过程结束之前,尽管相应的内存数据可以任意正常读写,但是屏幕不会刷新显示,加入doevents后可以转让控制权给屏幕刷新,执行doevents之后,屏幕会刷新所有被改变过的控件,刷新完之后,控制权交回当前过程继续执行。防止屏幕呈现假死的显示状态。
2.for语句循环过程中,设备不会响应触摸事件,串口指令会接收到缓冲区,但不会执行,直到当前过程所有语句执行完毕为止,请慎重使用,以防进入死循环。
for(n0.val=0;n0.val<100;n0.val++)
{
//需要循环100次的代码
doevents
}
