串口HMI指令集
发布版本V2.4 版本修改日期:2017年5月19日
注:
1.设备接受指令结束符为”0XFF 0XFF 0XFF”三个字节。
2.所有指令名以及参数全部使用ASCII字符串格式,非二进制数据,便于阅读和调试。
3.所有指令名使用小写字母(此处仅仅指的是指令名称为小写,参数该大写的时候还是要大写)。
4.0.39版本开始,在运行中修改控件的任何属性都将自动刷新,不再需要使用手动刷新指令。(原来的版本在修改非加粗属性时需要手动刷新)。
分类一:对象及系统操作指令
page pageid
pageid:页面ID或页面名称
实例1:page 0 (刷新ID为0的页面)
实例2:page main (刷新名称为main的页面)
备注:
1.设备上电自动刷新第0页。
2.也可以对系统变量dp赋值来实现跳转页面(如dp=0),系统变量dp可以设置可以读取,具体请参看系统变量列表。
ref obj
obj:控件ID或控件名称
实例1:ref 1 (重绘ID为1的控件)
实例2:ref t0 (重绘名称为t0的控件)
备注:
如果一个控件被GUI指令画出来的内容遮挡或者被另外的控件遮挡之后需要再显示出来,就使用ref来重绘。
click obj,event
obj:控件ID或控件名称
event:事件序号:0为弹起,1为按下
click b0,1 (激活名称为b0的控件的按下事件)
click 2,0 (激活ID为2的控件的弹起事件)
备注:
控件的按下/弹起事件在屏幕上触摸的时候会自动激活,如果在没有触摸的情况下想要手动激活,就使用click 指令即可。
get att
att:变量名称
实例1: (返回控件t0的txt属性值) 实例2:get j0.val(返回控件j0的val属性值)
1
实例3:get “123”(返回常量字符串”123”) 实例4:get 123(返回常量数值:”123”)
备注:
1.使用get指令获取的变量为字符串类型时,返回的数据为0X70+字符串内码+结束符,如果是数值类型(如进度条的val属性)设备返回0X71+变量的4字节十六进制数据(int类型)+结束符。数值的存放模式为小端模式(即低位在前,高位在后)。
<指令可以由串口发送,也可以在上位软件编辑界写进用户代码中实现屏幕主动发送变量(主动发送的时候可以配合printh指令在前面加一段自定义标示来告诉单片机此变量是属于哪个控件的)。parameter数据类型
<指令和print指令很类似,唯一的区别是get返回的数据带了起始标示符(0x70或0x71)和结束符(0xff 0xff 0xff),而print没有。
4..数据具体返回格式请查看本表格后面的”串口HMI设备返回数据格式"。
print att
att:变量名称
实例1: (返回控件t0的txt属性值) 实例2: print j0.val(返回控件j0的val属性值)
实例3: print “123”(返回常量字符串”123”即:0x31 0x32 0x33)
实例4: print 123(返回常量数值:123 即:0x7b 0x00 0x00 0x00)
备注:
1.使用print指令获取的变量为字符串类型时,设备直接返回字符串内码,如果是数值类型(如进度条的val属性)设备直接返回变量的4字节十六进制数据(int类型),数值的存放模式为小端模式(即低位在前,高位在后)。
2.使用print指令获取数据的时候,设备仅仅只发送数据内容,没有起始标示符,也没有结束符。
3.print指令可以配合printh指令在前面加一段自定义标示来告诉单片机此变量是属于哪个控件的)。
4.print指令和get指令很类似,唯一的区别是get返回的数据带了起始标示符(0x70或0x71)和结束符(0xff 0xff 0xff),而print没有。
16
printh hex
hex:需要发送的字符的16进制字符串表达式
实例:printh d0 a0(让设备发送0xd0 0xa0两个字节)
备注:
1.使用printh指令发送数据的时候,设备仅仅只发送指定的字符,不会发起始符,不会发空格,不会发结束符。
2.参数中每组字符间必须有且只能有一个空格隔开,16进制的字符串表达式大小写均支持。
vis obj,state
obj:控件名称或控件ID
state:状态(0或1)
实例1:vis b0,0 (隐藏b0控件) 实例2:vis b0,1 (显示b0控件)
实例3: vis 1,0 (隐藏ID为1的控件) 实例4: vis 1,1 (显示ID为1的控件)
备注:
第一个参数 为255表示 当前页面所有控件,例:vis 255,0(隐藏当前页面所有控件) vis 255,1(显示当前页面所有控件)。
tsw obj,state
obj:控件名称或控件ID
2
state:状态(0或1)
实例1:tsw b0,0 (让名称为b0的控件触摸失效) 实例2:tsw b0,1 (让名称为b0的控件触摸有效)
实例3:tsw 1,0 (让ID为1的控件触摸失效) 实例4:tsw 1,1 (让ID为1的控件触摸有效)
备注:
第一个参数 为255表示 当前页面所有控件,例:tsw 255,0(当前页面所有控件触摸失效) tsw 255,1(当前页面所有控件触摸有效)。
randset minval,maxval
minval:最小值
maxval:最大值
实例:ranset 1,100 (设置当前随机数产生范围为最小1,最大100)
备注:
1.使用随机数之前需要先使用randset指令设定一次随机数产生范围,如果不设置,默认是最小0,最大2147483647。设置完范围以后,每读取一次系统变量rand将会得到一个随机数。
2.使用randset指令每设定一次范围,将一直有效,直到重新上电或者设备复位才会恢复默认。
3.随机数设定范围的数据类型为int类型(即:最小-2147483648,最大2147483647)。
add objid,ch,val
objid:曲线控件ID序号(此处必须是ID号,不支持使用控件名称)
ch:曲线控件通道号
val:数据 (最大255,最小0)
实例1:add 1,0,30 (往ID为1的曲线控件的0通道添加数据30)
实例2:add 1,1,n0.val (往ID为1的曲线控件的1通道添加数据n0.val)
备注:
1.曲线数据只支持8位数据,最小0,最大255。
2.每个page页面最多支持4个曲线控件,每个曲线控件最多支持4个通道。可以连续发送数据,控件会自动平推显示数据.在发送数据的过程中也可以随时修改控件属性,比如随时修改各个通道的前景或背景。
cle objid,ch
objid:曲线控件ID序号(此处必须是ID号,不支持使用控件名称)
ch:曲线控件通道号(255表示所有通道)
实例1:cle 1,0 (清除ID为1的曲线控件的0通道数据)
实例2:cle 1,255 (清除ID为1的曲线控件的所有通道数据)
备注:
1.通道号为255时表示清除此曲线控件内的所有通道数据。
addt objid,ch,qyt
objid: 曲线控件ID序号(此处必须是ID号,不支持使用控件名称)
ch:曲线控件中的通道号
qyt:本次透传数据的点数量
实例:addt 1,0,100 (ID为1的曲线控件进入数据透传模式,透传点数为100点)
备注:
3
1.曲线数据只支持8位数据,最小0,最大255。单次透传数据量最大1024字节
2.发完透传指令后,用户需要等待设备响应才能开始透传数据,设备收到透传指令后,准备透传初始
化数据大概需要5ms左右(如果在透传指令执行前串口缓冲区还有很多别的指令,那时间会更长),设备透传初始化准备好以后会发送一个透传就绪的数据给用户(0XFE+结束符),表示设备已经准备好,此时可以开始发送透传数据。透传数据为纯16进制数据,不再使用字符串,也不再需要结束符,设备收完指定的数据量以后,才会恢复指令接收状态。否则一直处于数据透传状态,透传数据完成以后,设备会发送结束标记给用户(0XFD+结束符)。
3.在指定的透传数量传输完成以前,曲线不会刷新,透传完毕之后会立即自动刷新。
doevents
实例: doevents (此指令不需要参数)
备注:
1.在一个较多指令的过程执行中,或者在一个较长时间的循环语句中,系统所有控制权被此过程全部占用,在过程结束之前,尽管相应的内存数据可以任意正常读写,但是屏幕不会刷新显示,加入doevents后可以转让控制权给屏幕刷新,执行doevents之后,屏幕会刷新所有被改变过的控件,刷新完之后,控制权交回当前过程继续执行。防止屏幕呈现假死的显示状态。
2.doevents多数情况下是配合while或for语句使用,使用方法请参看while或for语句的实例。
sendme
实例1:sendme (此指令不需要参数)
备注:
设备收到此指令会立刻把当前页面的ID号发送到串口,如果想要每次刷新页面自动发送页面ID,请在页面的初始化事件里写上sendme语句即可。发送格式请参看本表格后面的”串口HMI设备返回数据格式”表格。
cov att1,att2,lenth
att1:源变量
att2:目标变量
lenth:字符串的长度(0为自动长度,非0为固定长度)
实例1:cov h0.,0 (把滑块h0的val数值变量转换成10进制字符串并赋值给文本t0的txt变量,长度为自动)
实例2:,h0.val,0 (把文本t0的txt字符串变量转换为数值并赋值给滑块h0的val数值变量,长度为自动)
备注:
1.lenth始终表示的是字符串长度,数值转字符串的时候是目标变量的长度,字符串转数值的时候是源变量长度。
2.如果目标变量和源变量类型相同,转换失败。
strlen att0,att1
att0:需要测试的字符串变量
att1:把测试结果赋值给此变量
实例:,n0.val (把字符串变量t0.txt的实际字符长度赋值给n0.val)
备注:
1.strlen测试的是以字符为单位的长度,而btlen测试的是以字节为单位的长度,比如一个汉字用btlen测
试出来的长度是2字节,用strlen测试出来的长度是1字符。
4
2.被测试的变量必须是字符串类型,写入的变量必须是数值类型,否则会报错。
btlen att0,att1
att0:需要测试的字符串变量
att1:把测试结果赋值给此变量
实例:,n0.val (把字符串变量t0.txt的实际字节长度赋值给n0.val)
备注:
1.btlen测试的是以字节为单位的长度,而strlen测试的是以字符为单位的长度,比如一个汉字用btlen测试出来的长度是2字节,用strlen测试出来的长度是1字符。
2.被测试的变量必须是字符串类型,写入的变量必须是数值类型,否则会报错。
substr att0,att1,star,lenth
att0:源变量(必须是字符串变量)
att1:目标变量(必须是字符串变量)
star:在源变量中的字符起始位置
lenth:截取字符串长度
实例:,t1.txt,0,2 (从t0.txt中的0位置开始截取2个字符赋值给t1.txt)
touch_j
实例1:touch_j (进入触摸校准功能,此指令不需要参数)
备注:
所有设备出厂时已经校准过,一般情况下不需要使用此功能。
ref_stop
实例:ref_stop (此指令不需要参数)
备注:
1.暂停屏幕刷新之后,所有语句会继续解析并执行,相应的属性赋值操作也会正常运行,但是屏幕上的控件不会刷新,修改任何控件的任何属性都不会自动刷新显示(但是属性已经被正常修改了)。直到设备收到恢复刷新指令(ref_star)后,被修改过的控件将会立刻刷新显示。
2.暂停刷新之后,即便使用ref指令也不会立刻刷新,直到执行ref_star指令的时候统才会统一刷新,但是所有的gui绘图指令(比如画点,划线,画圆等)是不受影响的,会立即显示。
ref_star
实例:ref_star (此指令不需要参数)
备注:
此指令和ref_stop配合使用。
com_stop
实例1:com_stop (此指令不需要参数)
备注:
1.暂停串口指令执行之后设备会继续接受指令,但是都不会执行,全部放在指令缓存区,直到收到”com_star”指令后,设备会从暂停时的指令开始到当前为止的所有指令全部执行。
5
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论