按钮控件

用于在串口屏上显示按钮,使用前需要提前导入字库,制作字库请参考 创建字库和导入字库

如何修改显示的字体大小:需要提前导入不同大小的字库,需要修改控件显示的字体大小时,通过上位机编辑或者通过指令修改控件的font属性即可,请参考 如何修改控件显示的字体

提示

导入字库请参考: 如何导入字库

导入图片请参考: 如何导入图片

导入动画请参考: 如何导入动画

导入视频请参考: 如何导入视频

导入音频请参考: 如何导入音频

按钮控件-使用详解

通过按钮控件跳转页面

../_images/button_1.jpg

如上图所示,该工程有三个页面,分别为main,page0,page1,main页面的页面id为0,page0页面的页面id为1,page1页面的页面id为2

在main页面新建一个按钮控件,按钮控件的txt属性改为“跳转页面”,在按钮控件的弹起事件编写以下代码

1 //推荐此方法
2 page page1  //跳转到page1页面
../_images/button_2.jpg

因为page1页面的页面id是2,因此也可以这么写

1 //不推荐此方法,当插入页面导致页面顺序改变时会导致页面跳转逻辑混乱
2 page 2  //跳转到id为2的页面(也就是page1页面)
../_images/button_4.jpg

修改按钮控件显示文字的大小和样式

我们需要提前导入不同大小的字库,需要修改按钮控件显示大小时,通过上位机进行编辑或者通过指令进行修改即可,请参考 如何修改控件显示的字体

 1//串口屏控件事件代码(通常写在串口屏控件的按下或弹起事件中)
 2b0.font=1   //将b0控件的字体设置为1号字体
 3main.b0.font=1    //将main页面的b0控件的字体设置为1号字体,b0控件的vscope属性必须设置为全局
 4
 5
 6//单片机发送指令通过串口修改调用的字库id
 7int font_id = 1;   //字库编码
 8char tjcstr[100];
 9sprintf(tjcstr, "main.b0.font=%d\xff\xff\xff",font_id);
10printf(tjcstr);   //单片机需要配置printf重定向到串口
11
12
13//arduino发送指令通过串口修改调用的字库id
14int font_id = 1;   //字库编码
15char tjcstr[100];
16sprintf(tjcstr, "main.b0.font=%d\xff\xff\xff",font_id);
17Serial.print(tjcstr);

让按钮在开始和停止之间切换

1if(b0.txt=="开始")
2{
3     b0.txt="停止"
4}else
5{
6     b0.txt="开始"
7}

按钮禁用触摸功能

使用tsw指令来实现触摸的使能和失能

//禁用b0的触摸
tsw b0,0

//开启b0的触摸
tsw b0,1

建议使用tsw时,配合修改按键的外观(修改颜色或者修改调用的图片)来让用户能够一眼了解按钮是否可用

当然也有其他的方法来实现类似的功能

例如:

使用文本控件替代按钮控件

在文本控件的按下或者弹起事件里,判断文本的bco或者pic属性,只有属性为自己需要时才可触发对应的代码

../_images/button_5.jpg ../_images/button_6.jpg

我们只需修改控件的bco属性为其他值,此时不符合条件,不会执行if里面的内容,也就相当于“禁用”这个功能了

通过按钮控件发出串口数据

1//将n0.val的值从串口发送出来
2prints n0.val,0
3
4//将t0.txt的值从串口发送出来
5prints t0.txt,0
6
7//发送回车换行
8printh 0d 0a

prints-从串口打印一个变量/常量

printh-从串口打印16进制

在键盘页面按下OK键时将参数通过串口发送出去

使用按钮实现长按功能

需配合定时器使用

1.新建一个定时器tm0,en属性设置为0,tim属性设置为你想要长按的时间,例如2秒,则设置为2000。

2.在按钮的按下事件中写上如下代码:

1 //打开定时器
2 tm0.en=1

3.在按钮的弹起事件中写上如下代码:

1 //弹起事件代表已经松手了,所以让定时器立即停止工作
2 tm0.en=0

4.在定时器tm0的定时事件中先关闭定时器,然后写上想操作的长按事件代码,比如:

1 //长按时间到了,先关闭定时器
2 tm0.en=0
3 //接下来可以写自己需要长按后执行的代码,例如跳转到main页面
4 page main

使用按钮实现双击功能

需配合定时器使用和数字控件使用

1.新建一个定时器tm0,en属性设置为0,tim属性设置双击的间隔,例如400毫秒,则设置为400(定时器定时间隔最低50ms)。新建一个数字控件n0,用于记录双击次数

2.在按钮的按下事件中写上如下代码:

1 //打开定时器
2 tm0.en=1
3 n0.val++
4 if(n0.val>=2)
5 {
6     //触发了双击,跳转页面
7     page main
8 }

3.在定时器tm0的定时事件中编写以下代码

1 //关闭定时器
2 tm0.en=0
3
4 //清空n0.val
5 n0.val=0

调试ok后可以将数字控件改为变量控件

使用按钮在多个状态之间切换

 1if(b0.txt=="状态1")
 2{
 3   b0.txt="状态2"
 4}else if(b0.txt=="状态2")
 5{
 6   b0.txt="状态3"
 7}else if(b0.txt=="状态3")
 8{
 9   b0.txt="状态4"
10}else if(b0.txt=="状态4")
11{
12   b0.txt="状态5"
13}else
14{
15   b0.txt="状态1"
16}

使用按钮在多个状态之间切换2

 1if(b0.txt=="开始")
 2{
 3   b0.txt="暂停"
 4}else if(b0.txt=="暂停")
 5{
 6   b0.txt="停止"
 7}else
 8{
 9   b0.txt="开始"
10}

按钮控件-样例工程下载

演示工程下载链接:

《按钮控件》演示工程下载

《按钮长按发送数据》演示工程下载

按钮控件-相关链接

哪些控件属性可以运行中修改,哪些不能运行中修改

txt属性和val属性有什么区别,为什么有些属性赋值要加双引号,有些不用加双引号

跨页面赋值,全局变量操作

按钮控件-属性详解

控件属性解析

提示

绿色属性可以通过上位机或者串口屏指令进行修改,黑色属性只能在上位机中修改或者不可修改,可通过上位机进行修改指“选中控件后通过属性栏修改控件的属性”

type属性 -控件类型,固定值,不同类型的控件type值不同,相同类型的控件type值相同,可读,不可通过上位机修改,不可通过指令修改。参考: 控件属性-控件id对照表

id属性 -控件ID,可通过上位机左上角的上下箭头置顶或置底,可读,可通过上位机修改左上角的箭头置顶或置地间接修改,不可通过指令修改。参考: 如何更改控件的前后图层关系

objname属性 -控件名称。不可读,可通过上位机进行修改,不可通过指令更改。

vscope属性 -内存占用(私有占用只能在当前页面被访问,全局占用可以在所有页面被访问),当设置为私有时,跳转页面后,该控件占用的内存会被释放,重新返回该页面后该控件会恢复到最初的设置。可读,可通过上位机进行修改,不可通过指令更改。参考:跨页面赋值,全局变量操作

drag属性 -是否支持拖动:0-否;1-是。仅x系列支持。可读,可通过上位机修改,可通过指令修改。

aph属性 -不透明度(0-127),0为完全透明,127为完全不透明。仅x系列支持。可读,可通过上位机修改,可通过指令修改。

effect属性 -加载特效:0-立即加载;1-上边飞入;2-下边飞入;3-左边飞入;4-右边飞入;5-左上角飞入;6-右上角飞入;7-左下角飞入;8-右下角飞入。仅x系列支持,在上位机中设置为立即加载时,无法通过指令变为其他特效,当在上位机中设置为非立即加载的特效时,可以变为立即加载,也可以再改为其他特效

sta属性 -背景填充方式:0-切图;1-单色;2-图片;3-透明(仅x系列支持透明)。可读,可通过上位机修改,不可通过指令修改。

picc属性 -按钮没按下时切图背景(必须是全屏图片),sta为切图时才有这个属性。可读,可通过上位机修改,可通过指令修改。

picc2属性 -按钮按下时切图背景(必须是全屏图片),sta为切图时才有这个属性。 可读,可通过上位机修改,可通过指令修改。

bco属性 -按钮没按下时背景色,sta为单色时才有这个属性。可读,可通过上位机修改,可通过指令修改。

bco2属性 -按钮按下时背景色 ,sta为单色时才有这个属性。可读,可通过上位机修改,可通过指令修改。

style属性 -显示风格:0-平面;1-边框;2-3D_Down;3-3D_Up;4-3D_Auto,sta为单色时才有这个属性。可读,可通过上位机修改,不可通过指令修改。

borderc属性 -边框颜色。当style设置为边框时可用。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

borderw属性 边框粗细。当style设置为边框时可用。最大值:255。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

pic属性 -按钮没按下时背景图片,sta为图片时才有这个属性。可读,可通过上位机修改,可通过指令修改。

pic2属性 -按钮按下时背景图片,sta为图片时才有这个属性。可读,可通过上位机修改,可通过指令修改。

pco属性 -按钮没按下时字体色。可读,可通过上位机修改,可通过指令修改。

pco2属性 -按钮按下时字体色。可读,可通过上位机修改,可通过指令修改。

font属性 -控件调用的字库id,调用不同的字库会显示不同的字体或字号。可读,可通过上位机修改,可通过指令修改。参考:1、 创建字库和导入字库 2、 指定字库

xcen属性 -水平对齐:0-靠左;1-居中;2-靠右。可读,可通过上位机修改,可通过指令修改。

ycen属性 -垂直对齐:0-靠上;1-居中;2-靠下。可读,可通过上位机修改,可通过指令修改。

txt属性 -字符内容(按钮上显示的文本)。可读,可通过上位机修改,可通过指令修改。

txt_maxl属性 -控件分配的内存空间。GB2312下,ascii字符占用1个字节,一个汉字占2字节。UTF8下,ascii字符占用1个字节,一个汉字占3字节。可读,可通过上位机修改,不可通过指令修改。

isbr属性 -是否自动换行:0-否;1-是。可读,可通过上位机修改,可通过指令修改。

spax属性 -字符横向间距(最小0,最大255)。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

spay属性 -字符纵向间距(最小0,最大255)。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

x属性 -控件的X坐标。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

y属性 -控件的Y坐标。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。

w属性 -控件的宽度。可读,可通过上位机修改,不可通过指令修改。

h属性 -控件的高度。可读,可通过上位机修改,不可通过指令修改。