Usart HMI支持赋值运算符:“=”;算术运算符: “+”、“-”、“*”、“/”、“%”;单目运算符:"++"、“--”,位运算符:"&"、"|"、"^"、"<<"、“>>”;复合运算符:"+="、 "-="、“*=”、“/=”、“%=”、"|="、"&="、“^=”、“<<=”、“>>=”;逻辑运算符"=="、 "<"、">"、“<=”、">="; 赋值运算符的优先级最低,但是Usart HMI的其他符不支持优先级,算术运算按从左到右进行计算,这点需要特别注意。本文将讲解Usart HMI 的这些运算符、循环语句及其应用。
一 Usart HMI代码语句格式
Usart HMI代码语句由指令、 *** 作对象、“,”及运算符与空格组成。指令与 *** 作对象(参数)间用空格隔开,除头尾外不可再有空格, *** 作对象(参数)间用“,”隔开(除for循环头外,这里用";")。示例:
page main
covx t2.txt,va0.val,0,0
习惯写c代码后,不小心就会在语句后面加分号";", 这千万不能加,加了编译就会出错。
二 赋值运算符
Usart HMI支持的数据类型就两种:字符串、整数,整数占4个字节。内部变量都为整数类型,在使用它们时后面不能加".val"。自己添加的变量,字符串型变量名后必须加".txt",数值型变量名后必须加".val",才能用于赋值,或被赋值。注意:不同类型的变量不可相互赋值,变量也不可赋予不同类型的值。
给数值型变量赋值示例1:
va0.val=100
给数值型变量赋值示例2:
va0.val=sys0
给数值型变量赋值示例3:
va0.val=va1.val
给字符串型变量赋值示例1:
va0.txt=va1.txt
给字符串型变量赋值示例2:
va1.txt=“abc”
va0.txt=“123” //如果va0.txt的最大字符数大于或等于3,结果为"123",如果小于3,后面多余字符将丢弃
三 算术运算符
数值型变量的算术运算 这个很简单,不需要多讲。示例:
va3.val=8+3/3+1%2 //va3.val值为0
va3.val=8+3*5 //va3.val值为55
字符串型变量的算术运算 支持"+","-"运算当很特别,不支持变量间相减,例如:
却支持减去整数,如:
从输出结果可以看出t2.txt的值为"123",即删除了后两位.
但不支持加上一个整数,例如:
字符串型变量相加,结果是把两个 字符串连接在一起,把结果赋值给一个字符串型变量,如果这个变量最大字符数n大于结果字符数,这个变量值就是相加的结果,否则截取前n个字符.
示例:
输出结果为"12345",即t2.txt为"12345". 再看下面:
输出结果为"12345",即t2.txt为"12345".因为t2.txt的最大字符数为5,多余的丢弃了.
四 单目运算符
单目运算符中的“++”仅适合数值型变量,与C语言的单目运算符功能一致。示例:
输出结果为4. 再看下面:
输出结果为6. 再看数值型变量“--”应用:
结果是删除末尾字符。
五 位运算
位运算仅适合与数值型变量,用法与C语言的位运算符一致。示例:
结果为1, 再看按位或运算:
va3.val的结果为0xFF,即255. 再看异或运算:
va3.val的结果为0xFF,即255. 再看左移运算:
va3.val的结果为0x08,即8. 再看右移运算:
va3.val的结果为0x02,即2.
六 复合运算符
复合运算符,即变量先与后面的参数运算,然后再将结果赋予变量,单一运算符支持的,复合运算符依然支持。这个也与C语言的复合运算符原理相同,很简单,就不再做演示。
七 逻辑运算符
Usart HMI的逻辑运算符符号与原理都与C语言的逻辑运算符一致,需在if语句中使用。
if语句示例1:
if(Main.r0.val==1)
{
s0.gdc=65535
}else
{
s0.gdc=34784
}
if语句示例2:
if(va2.val<300) { va2.val++ printh AF //upload data cov va3.txt,sys0,0 add 13,0,sys0 //wepo sys0,va2.val }else if(va2.val>775) { Main.finishflag.val=1 printh A2 //stop test }else { va1.val++ if(va1.val==Main.timgap.val) { va1.val=0 va2.val++ printh AF //upload data } }
if语句示例3:
if(va1.val==0) { bt0.val=0 bt3.val=0 bt6.val=0 }else if(va1.val==1) { bt0.val=1 bt3.val=0 bt6.val=0 }else if(va1.val==2) { bt0.val=0 bt3.val=1 bt6.val=0 }else if(va1.val==3) { bt0.val=0 bt3.val=0 bt6.val=1 } strlen t1.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t1.txt t1.txt=tem2.txt } strlen t2.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t2.txt t2.txt=tem2.txt } strlen t3.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t3.txt t3.txt=tem2.txt } strlen t4.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t4.txt t4.txt=tem2.txt } strlen t5.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t5.txt t5.txt=tem2.txt } strlen t6.txt,sys0 if(sys0<6) { tem2.txt="000000" tem2.txt-=sys0 tem2.txt+=t6.txt t6.txt=tem2.txt }
八 while循环
Usart HMI支持while循环,其原理也与C语言的相同,示例:
while(va2.val<100)
{
va2.val++
}
九 for 循环
Usart HMI支持for循环,其原理也与C语言的相同,示例:
for(sys0=0;sys0<100;sys0++)
{
va2.val++
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)