51单片机实战教程(28 人机界面编程五)

2本文将介绍Usart HMI常用指令

page指令 用于页面切换,使用格式 :

page obj     

obj指页面名称或id,

示例:

有下面两个页面, 要从page0 切换到main

51单片机实战教程(28 人机界面编程五)_第1张图片
代码如下:

page 1    //type 2
page main  //type 1

2  ref 刷新控件指令(或者重绘控件)   

使用格式: ref obj   obj指控件名称或id, 

示例:

刷新下图t0

51单片机实战教程(28 人机界面编程五)_第2张图片

ref t0  //type 1
ref  1  // type 2

3 click  激活控件按下/弹起事件指令, 使用格式:

click obj event   

obj指控件名称或id,event指按下或弹起事件,0代表弹起事件,1代表按下事件。示例:激活下图b0的按下事件

click b0 1    //type 1
click 8  1    //type 2, 8 is b0's id

 4 get 带格式获取变量/常量值指令  向串口发送变量/常量值    

使用格式:get attr   

attr指变量/常量值。

示例:向串口发送下面控件t0的值

51单片机实战教程(28 人机界面编程五)_第3张图片

在发送数据时前面加了起始符(字符加0x70,整数加0x71),整数发送是一次发送4个字节,不足4个字节,高位用0x00补齐,低位在前,  后面加了结束符0xFF 0xFF 0xFF

5 prints 向串口发送变量/常量值指令 与get指令类似,但发送数据时,没有加起始符与结束符。

使用格式: prints attr,length

length指发送长度,0代表发送完attr的所有数据。

示例:

6 printh 向串口字符16位值指令 使用格式:

printh hex     

示例:

 7 vis 隐藏/显示控件指令      使用格式:

vis obj,state

 obj指控件名称或id,如果obj用255代替则表示页面上的所有控件。state可以为0或1。0为隐藏,1为显示。示例:下图是main页面,上面有多个控件,t2控件的文本为时钟设置

51单片机实战教程(28 人机界面编程五)_第4张图片进入调试模式下藏在指令/显示控件 vi7.vis  隐藏/显示控件s  隐藏/显示控件vis  隐藏/显示控件

进入调试模式,在指令输入区输入page main回车,即切换到main页面。

51单片机实战教程(28 人机界面编程五)_第5张图片

 在指令输入区输入vis t2,0  回车, 结果如下:

51单片机实战教程(28 人机界面编程五)_第6张图片

 t2控件被隐藏了,再在指令输入区输入vis t2,1  回车, 结果如下:

51单片机实战教程(28 人机界面编程五)_第7张图片

 t2控件显示出来了。

8 tsw 控件触摸使能指令  使用格式:

tsw obj,state   

obj是指控件名称或id,如果obj用255代替则表示页面上的所有控件。state可以为0或1. 1是触摸使能,即触摸功能有效,0是触摸功能失效。 示例:下面是page0页面,上面有多个按钮。

51单片机实战教程(28 人机界面编程五)_第8张图片

 进入调试模式,如下:

51单片机实战教程(28 人机界面编程五)_第9张图片

 用鼠标左键点击“0”按钮,结果如下:

51单片机实战教程(28 人机界面编程五)_第10张图片

 在指令输入区输入 tsw b0,0 回车,再用鼠标左键点击“0”按钮,结果如下:

51单片机实战教程(28 人机界面编程五)_第11张图片

 按钮没有反应,也就是说按钮失效了。再在指令输入区输入 tsw b0,1 回车,再用鼠标左键点击“0”按钮,结果如下:

51单片机实战教程(28 人机界面编程五)_第12张图片

按钮又有效了。

9 randset 随机数范围设置指令    使用格式:

randset minval,maxval  

minval:最小值

maxval:最大值

示例:

 读取rand两次得到的结果分别为0x49,0x53,都在10~100以内。

10 add 往曲线/波形控件添加数据指令  使用格式:

add objid,ch,val

objid:曲线控件ID序号(此处必须是ID号,不支持使用控件名称,id号取值范围0~3,也就是说一个控件最多可以显示4条曲线)。

ch:曲线控件通道号val:数据 (最大255,最小0)。

示例:

add 13,0,30

add 13,1,35

11 cle 清除曲线/波形控件控件中的数据指令  使用格式:

cle objid,ch
objid:曲线控件ID序号(此处必须是ID号,不支持使用控件名称)
ch:曲线控件通道号(255表示所有通道)

示例:

cle 13,0

12 addt 曲线/波形控件数据透传指令  使用格式:

addt objid,ch,qyt
objid: 曲线控件ID序号(此处必须是ID号,不支持使用控件名称)
ch:曲线控件中的通道号
qyt:本次透传数据的点数量
示例:

addt 13,0,100 (ID为13的曲线控件进入数据透传模式,透传点数为100点)

13 sendme 发送当前页面ID号到串口指令    使用格式:

sendme                                  //此指令不需要参数

14 covx 变量类型转换指令   使用格式:

covx att1,att2,lenth,format
att1:源变量
att2:目标变量
lenth:字符串的长度(0为自动长度,非0为固定长度)
format:申明数值类型(0-数字;1-货币;2-Hex)

示例:

51单片机实战教程(28 人机界面编程五)_第13张图片

 结果为:0x03E8,转换为十进制刚好为1000.

15 strlen 获取字符串变量字符长度指令,使用格式:

strlen att0,att1
att0:需要测试的字符串变量
att1:把测试结果赋值给此变量
示例:

strlen t0.txt,n0.val  //把字符串变量t0.txt的实际字符长度赋值给n0.val

16 btlen 获取字符串变量字节长度指令 注意与strlen的区别,strlen是获取字符数,btlen是获取字节数,如果是单字节字符串结果是一致的,双字节字符串差异就大了。使用格式:

btlen att0,att1
att0:需要测试的字符串变量
att1:把测试结果赋值给此变量
示例:

btlen t0.txt,n0.val  //把字符串变量t0.txt的实际字节长度赋值给n0.val

17.substr 字符串截取指令  使用格式:

substr att0,att1,star,lenth
att0:源变量(必须是字符串变量)
att1:目标变量(必须是字符串变量)
star:在源变量中的字符起始位置lenth:截取字符串长度                                                                         示例:

substr t0.txt,t1.txt,0,2   //从t0.txt中的0位置开始截取2个字符赋值给t1.txt

18 spstr 字符串分割指令  使用格式:

spstr src,dec,key,index
src:源变量(必须是字符串变量)
dec:目标变量(必须是字符串变量)
key:分隔符字符串(必须是字符串变量)
index:取第几份(在src字符串中用key字符串做分割后,取第index份字符内容赋值给dec变量)
示例:data0.txt的d字符内容为:aaaa^bbbb^cccc^dddd
执行命令:spstr data0.txt,t0.txt,"^",2
运行结果:t0.txt内容为:cccc

19 ref_stop 暂停屏幕刷新指令     使用格式:

    ref_stop    //此指令不需要参数

20 com_stop 暂停串口指令执行指令    使用格式:

        com_stop    //此指令不需要参数

22 com_star 恢复串口指令执行指令   使用格式:

        com_star    //此指令不需要参数

23 wepo写入一个变量到用户存储区(EEPROM)指令  这个需要屏硬件支持才能使用,使用格式:

wepo att,add
att:变量/常量
add: 用户存储区位置(从0开始)
示例1:

wepo t0.txt,10 //将t0.txt的内容写入用户存储区的第10位置,在储存区中的占用空间为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1


示例2:

wepo “abcd”,10 //将字符串“abcd”写入用户存储区的第10位置,在储存区中占用大小为5字节


示例3:

wepo 125,10 //将数值125写入用户存储区的第10位置, 在储存区中占用大小为4字节

24.repo 从用户存储区(EEPRO)读数据到一个变量指令  这个需要屏硬件支持才能使用,使用格式:

repo att,add
att:目标变量
add: 用户存储区位置(从0开始)
示例1:

repo t0.txt,10  //从用户存储区的10位置读数据到t0.txt变量中,在储存区中的读取数据量为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1
示例2.

repo n0.val,10 //从用户存储区的10位置读数据到n0.val,在存储区中的读取数据量为4字节

25 wept 透传数据写入用户存储区(EEPROM)指令  这个需要屏硬件支持才能使用,使用格式:

wept add,lenth
add: 用户存储区地址(从0开始)
lenth:透传长度
示例:wept 10,30 //透传30个字节的数据存到EEPROM的10位置,占用空间为10-39

26 rept 从用户存储区读取数据并透传发送到串口指令    这个需要屏硬件支持才能使用,使用格式:

rept add,lenth
add: 用户存储区位置(从0开始)
lenth:读取并透传发送的长度
示例:

rept 10,30 //从用户存储区的10位置读取30个字节并透传发送到串口

27 cls 清屏指令            使用格式:

cls color
color是十进制颜色值或颜色代号
示例1:

cls 1024 //用十进制1024的颜色值刷屏
示例2:

cls RED //用代号为RED的颜色(RED代表红色)刷屏

28 pic 刷图指令          使用格式:

pic x,y,picid
x:起始点x坐标;
y:起始点y坐标;
picid:图片ID;
示例1:

pic 10,20,0 //在坐标(10,20)位置显示资源文件中图片ID为0的图片
示例2:

pic 40,50,1 //在坐标(40,50)位置显示资源文件中图片ID为1的图片 

29 picq 切图指令   使用格式:

picq x,y,w,h,pici
dx:屏幕起始点x坐标;
y:屏幕起始点y坐标;
w:区域宽度;
h:区域高度;
picid:图片ID;
示例:

picq 20,50,30,20,0 //将图片0起始坐标(0,0)宽度30高度20这个区域切到屏幕上显示,屏幕上的显示起始坐标为(20,50)

30 xpic 高级切图指令       使用格式:

xpic x,y,w,h,x0,y0,picid
x:屏幕起始点x坐标;
y:屏幕起始点y坐标;
w:区域宽度 ;h:区域高度;
x0:图片起始点x坐标;
y0:图片起始点y坐标;
picid:图片ID;
示例:

xpic 20,50,30,20,40,15,0 //将图片0起始坐标(40,15)宽度30高度20这个区域切到屏幕上显示,屏幕上的显示起始坐标为(20,50)

31 xstr 写字指令      使用格式:

xstr x,y,w,h,fontid,pointcolor,backcolor,xcenter,ycenter,sta,string
x:起始点坐标x;
y:起始点坐标y;
w:区域宽度;
h:区域高度;
fontid:字库ID;
pointcolor:字体颜色;
backcolor:背景色(sta设置为切图或图片时,backcolor表示图片ID);
xcenter:水平对齐方式(0为左对齐,1为居中,2为右对齐);
ycenter: 垂直对齐方式(0为上对齐,1为居中,2为下对齐);
sta:背景填充方式(0为切图,1为单色,2为图片,3为无背景,sta设置为切图或图片时,backcolor表示图片ID)
string:字符内容;
示例:

xstr 0,0,100,30,1,RED,BLACK,1,1,1,”中国”   //使用字库1在起始坐标(0,0),宽度100,高度30这个区域写出”中国”,字体色为RED,背景色为BLACK(如果不想写背景色(即无背景)可以设置sta参数为3),水平对齐方式为居中,垂直对齐方式也为居中。

32 fill 区域填充指令    使用格式:

fill x,y,w,h,color
x:起始点坐标x ;
y:起始点坐标y;
w:区域宽度;
h:区域高度;
color:填充颜色;
示例:

fill 0,0,100,30,RED   //在起始坐标(0,0)宽度100,高度30这个区域填充RED颜色

33 line 画线指令       使用格式:

line x,y,x2,y2,color
x:起始点坐标x;
y:起始点坐标y;
x2:结束点坐标x ;
y2:结束点坐标y;
color:画线颜色;
示例:

line 0,0,100,100,RED //在坐标(0,0)和坐标(100,100)之间画出一条RED颜色的线

34 draw 画矩形指令  画出的矩形无填充, 使用格式:

draw x,y,x2,y2,color
x:起始点坐标x ;
y:起始点坐标y;
x2:结束点坐标x ;
y2:结束点坐标y;
color:画线颜色;
示例:

draw 0,0,100,100,RED  //画一个矩形,左上角为(0,0),右下角为(100,100), 颜色为RED

35 cir 画空心圆指令             使用格式:

cir x,y,r,color
x:圆心坐标x
y:圆心坐标y
r:半径
color:画线颜色;
示例:

cir 100,100,30,RED     //以坐标(100,100)为圆心画一个半径为30的空心圆,颜色为RED

36 cirs 画实心圆指令            使用格式:

cirs x,y,r,color
x:圆心坐标x
y:圆心坐标y
r:半径
color:填充颜色;
示例:

cirs 100,100,30,RED  //以坐标(100,100)为圆心画一个半径为30的实心圆,填充颜色为RED

你可能感兴趣的:(51单片机,嵌入式硬件,单片机)