USART HMI 资料中心

官方技术交流QQ群:916560014

站点工具


目录索引

6.指令集:2.书写语法

HMI书写语法

【目录】

一、赋值操作

二、运算操作

三、跨页面操作控件属性

四、HMI逻辑语句


一、【赋值操作】

●所有的赋值操作可以在上位编辑状态下写入控件事件中,也可以串口传输过来(串口传输记得加三个0xff的结束符)

▶字符串属性赋值:

t0.txt="123"     给t0控件的txt属性赋值"123"
t0.txt=t1.txt    把t1控件的txt属性赋值给t0控件的txt属性

以下为错误的赋值写法:

t0.txt=123             错误原因:t0控件的txt属性为字符串类型,字符串类型的属性赋值常量必须加双引号

t0.txt=h0.val         错误原因:h0控件的val属性是数值类型,不能赋值给字符串类型的属性


▶数值属性赋值

n0.val=123      给n0控件的val属性赋值123
n0.val=h0.val   把h0控件的val属性赋值给n0控件的val属性
dim=80          给系统变量dim赋值80(背光亮度立即变为80亮度)
baud=115200     给系统变量baud赋值115200(屏幕波特率立即变为115200)
n0.val=baud     把屏幕当前的波特率系统变量赋值给n0控件的val属性

以下为错误的赋值写法:

n0.val="123"         错误原因:n0控件的val属性为数值类型,数值类型的属性赋值常量不应该有双引号

n0.val=t0.txt         错误原因:t0控件的txt属性是字符串类型,不能赋值给数值类型的属性

温馨提示:

1.到目前为止,只有txt属性是字符串类型,其他属性都是数值类型。

2.字符串类型和数值类型可以通过covx指令来实现相互转换赋值,具体请参看指令集中的covx指令说明。


二、【运算操作】

所有运算不支持乘除法优先,也不支持括号优先级,统一从左到右的顺序,请特别注意。

●所有的运算操作可以在上位编辑状态下写入控件事件中,也可以串口传输过来(串口传输记得加三个0xff的结束符)

▶数值类型变量运算操作

支持的运算符:+  -  *  /  %   &  |  ^  <<  >>

实例:

n0.val=n0.val+n1.val+2
n0.val++
n0.val+=2
n0.val=n1.val%3
n0.val=h0.val*10
n0.val*=10
n0.val=n1.val&3
n0.val=n1.val^5
…..

以下为错误的运算写法:

n0.val=t0.txt+1          错误原因:数值类型的变量必须跟数值类型的变量做运算,并赋值给数值类型的变量

n0.val=1+"2"             错误原因:数值类型的变量必须跟数值类型的变量做运算,并赋值给数值类型的变量


▶字符串类型变量运算操作

运算符 "+"

实例:

t0.txt="1"+"2"
t0.txt=t0.txt+t1.txt
t0.txt+="abc"+"xy"

以下为错误的运算写法:

t0.txt=1+2                 错误原因:1和2都是数值常量 字符串类型的变量只能跟字符串常量/变量相加,不能跟一个数值常量/变量相加

t0.txt=t0.txt+h0.val    错误原因:h0.val是数值变量,不能跟字符串变量相加


运算符 "-"

实例:

t0.txt=t0.txt-1    删除t0.txt最后1个字符
t0.txt=t0.txt-3    删除t0.txt最后3个字符
t0.txt-=n0.val     删除t0.txt最后n0.val个字符

在字符串变量运算中,"-"代表删除的意思,所以用"-"的时候,字符串变量必须"-"一个数值常量/变量来表示删除多少个字符,这里跟用"+"是不一样的。用"+"的时候必须是字符串+字符串;用"-"的时候必须是字符串-数值。



三、【跨页面操作控件属性】

多数情况下,我们都是在操作当面页面的控件属性,如果需要操作其他页面的控件属性请按如下书写方式:

[页面].[控件].[属性]=XXX

实例:

main.t0.txt="123"            给main页面的t0.txt属性赋值"123"
main.t0.txt=set.t3.txt       把set页面的t3.txt赋值给main页面的t0.txt
set.t4.txt="abc"             给set页面的t4.txt赋值"abc"

特别注意:跨页面操作控件属性的时候,不管是读取还是赋值,被操作控件的vscope属性必须设置为全局(默认是私有),否则操作会失败。


四、【HMI逻辑语句】

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

1.if语句

实例1: (如果t0.txt等于"123456"那么就切换到页面1)

if(t0.txt=="123456")       
{                             
   page 1
}

实例2: (如果t0.txt不等于"a"也不等于b"那么就切换到页面1)

if(t0.txt!="a"&&t0.txt!="b")       
{                             
   page 1
}

实例3: (如果t0.txt等于"a"或者等于b"那么就切换到页面1)

if(t0.txt=="a"||t0.txt=="b")       
{                             
   page 1
}

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

if(b0.txt=="开始")           
{                               
   b0.txt="停止"
}else
{
   b0.txt="开始"
}

实例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)这样是不支持的。


2.while语句

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

while(n0.val<100)
{
  n0.val++
}

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

while(n0.val<100)
{
  n0.val++
  doevents
}

备注:

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

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


3.for语句

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

for(n0.val=0;n0.val<100;n0.val++)
{
}

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

for(n0.val=0;n0.val<100;n0.val++)
{
  doevents
}

备注:

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

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


6.指令集/2.书写语法.txt · 最后更改: 2019/07/09 16:19 由 zcd        浏览次数:70215/3115837(本页/全站)