实验19 工程休眠设置
1. 实验目的
通过修改与休眠相关的系统变量,使工程实现不同设置的休眠状态
介绍休眠相关的电气参数
2. 电气参数
G系列支持深度休眠(关闭背光,MCU进入休眠)与普通休眠,S系列仅支持普通休眠(关闭背光)
G系列(电阻触摸或无触摸)
尺寸 |
普通休眠功率 |
深度休眠功率 |
正常工作功率 |
---|---|---|---|
2.4 |
0.16W |
0.03W |
0.45W |
2.8 |
0.16W |
0.03W |
0.45W |
3.2 |
0.18W |
0.025W |
0.6W |
3.5 |
0.15W |
0.015W |
0.65W |
S系列(电阻触摸)
尺寸 |
普通休眠功率 |
正常工作功率 |
---|---|---|
4.3 |
1.1W |
1.6W |
7 |
1.25W |
2.6W |
3. 休眠系统变量介绍
编号 |
变量名 |
说明 |
取值范围 |
---|---|---|---|
4 |
sys_sleep |
是否休眠(可读写) |
0不休眠,1休眠 |
5 |
sys_slp_cls |
休眠等级(可读写) |
0为普通休眠(熄灭背光),1为深度休眠 |
6 |
sys_slp_nu |
无串口数据自动睡眠时间(可读写) |
单位:秒 0~255 0表示不睡眠 |
7 |
sys_slp_nt |
无触摸操作自动睡眠时间 (可读写) |
单位:秒 0~255 0表示不睡眠 |
8 |
sys_wup_bt |
睡眠模式下触摸唤醒开关 (可读写) |
0睡眠后触摸不会唤醒 1睡眠后触摸唤醒 |
9 |
sys_wup_bu |
睡眠模式下串口数据唤醒开关 (可读写) |
0睡眠后串口不会唤醒 1睡眠后串口唤醒 |
4. 页面布局
5. 控件介绍
控件名 |
属性 |
功能 |
---|---|---|
t_slp |
可见 双态按钮 |
休眠总开关,两种状态表示休眠和不休眠 |
t_slp_cla |
可见 双态按钮 |
休眠等级,本例程默认普通休眠 |
t_slp_typ |
可见 双态按钮 |
休眠类型,双态按钮分辨表示触摸和数据休眠 |
num_time |
可见 整数控件 |
显示自动休眠的时间单位(秒) |
butto_comfirm |
可见 按钮 |
确认按钮,确认休眠设置 |
button_recover |
可见 按钮 |
回复默认状态按钮,按下恢复默认设置 |
button_setdefault |
可见 按钮 |
将当设置设为默认设置 |
keyboard10 |
可见 键盘 |
键盘输入自动休眠时间 |
arr_slp |
不可见 数组 |
数组用来缓存设置的参数 |
arr_default |
不可见 数组 |
数组用来缓存默认设置的参数 |
slg_flag |
不可见 变量 |
初始化标记变量,标记页面加载事件只执行一次 |
6. 逻辑实现
6.1. 页面加载事件,初始化数组
脚本如下:
sys_slp_cls=0;//初始化睡眠等级为普通休眠
//初始化数组
//arr_slp[4] 此数组用来缓存控件修改的休眠数据,每一位表示一个相关参数
if(slg_flag.val==0)
{
//数据数组
arr_slp.vals[0]=0;//休眠等级 0普通休眠 1深度休眠
arr_slp.vals[1]=1;//触摸唤醒开关 0关 1开
arr_slp.vals[2]=0;//串口数据唤醒开关 0关 1开
arr_slp.vals[3]=120;//自动睡眠时间1-255单位 秒 为零时表示不睡眠
//默认状态数据缓存数组
//此数组用来缓存默认休眠数据,每一位表示一个相关参数
arr_default.vals[0]=0;//休眠等级 0普通休眠 1深度休眠
arr_default.vals[1]=1;//触摸唤醒开关 0关 1开
arr_default.vals[2]=0;//串口数据唤醒开关 0关 1开
arr_default.vals[3]=120;//自动睡眠时间1-255单位 秒 为零时表示不睡眠
slg_flag.val=1;
}
6.2. 休眠开关,设置是否休眠(双态按钮)
脚本如下
按下事件:
//可以休眠
//设置控件使能开启
//t_slp_cla.enable=1;//S系列不支持深度休眠
t_slp_typ.enable=1;
button_comfirm.enable=1;
button_recover.enable=1;
button_setdefault.enable=1;
num_time.opacity=100;
弹起事件:
//关闭休眠时其他控件使能关闭
//关闭休眠
//设置控件使能关闭
sys_wup_bt=0;
sys_wup_bu=0;
arr_slp.vals[1]=0;
arr_slp.vals[2]=0;
//t_slp_cla.enable=0;
t_slp_typ.enable=0;
button_comfirm.enable=0;
button_recover.enable=0;
button_setdefault.enable=0;
num_time.opacity=30;
num_time.fontColor=0xff000000;
6.3. 休眠等级,设置休眠等级(双态按钮)
此工程为S系列工程不支持深度休眠,此处脚本可以适用于G系列
脚本如下
按下事件:
arr_slp.vals[0]=0;//休眠等级普通
//仅G系列支持深度休眠,S系列只支持普通休眠
弹起事件:
arr_slp.vals[0]=1;//休眠等级为深度休眠
//仅G系列支持深度休眠,S系列支持普通休眠
6.4. 休眠类型,设置休眠类型 触摸或者数据(双态按钮)
脚本如下
按下事件:
//按下 触摸唤醒开关为关闭状态,串口数据唤醒开关为开
arr_slp.vals[1]=0;
arr_slp.vals[2]=1;
弹起事件
//按下 触摸唤醒开关为关闭状态,串口数据唤醒开关为开
arr_slp.vals[1]=0;
arr_slp.vals[2]=1;
6.5. 休眠时间,设置自动休眠事件(整数,键盘)
整数控件调出键盘,键盘上输入自动休眠时间
整数控件脚本:
if(t_slp.press==1)//休眠状态开启时可以输入
keyboard10.x=180;//调用键盘
键盘控件脚本如下:
输入完成
num_time.val=stringToInt(keyboard10.txt);//将键盘输入值赋值给显示控件
if(num_time.val<1)
{
num_time.val=1;
}
else if(num_time.val>255)
{
num_time.val=255;
}//自动休眠是时长为0-255,当为0时不睡眠,此处排除这种情况
arr_slp.vals[3]=num_time.val;//将正确输入的自动休眠时长赋值给数据对应位置
keyboard10.txt="";//清空键盘内容
keyboard10.x=810;//隐藏键盘
输入取消
keyboard10.txt="";//清空键盘内容
keyboard10.x=810;//隐藏键盘
6.6. 确认修改(按钮)
将缓存设置数据的数组赋值给系统变量
脚本如下:
//按下确认,将数组值赋值给休眠相关的各系统变量,确认修改
//设置休眠等级
//if(arr_slp.vals[0]==0)//仅G系列支持普通休眠和深度休眠切换,S系列只支持普通休眠
//{
// sys_slp_cls=0;
//}
//else
//{
// sys_slp_cls=1;
//}
//设置休眠类型和时间
if(arr_slp.vals[1]==1&&arr_slp.vals[2]==0)//设置休眠类型为触摸唤醒,设置无触摸自动休眠时间
{
sys_wup_bt=1;//开启触摸唤醒
sys_wup_bu=0;//关闭数据唤醒
sys_slp_nt=arr_slp.vals[3];//设置触摸自动休眠时长为数组缓存值
}
else if(arr_slp.vals[1]==0&&arr_slp.vals[2]==1)//设置休眠类型为数据唤醒,设置无数据自动休眠时间
{
sys_wup_bt=0;//关闭触摸唤醒
sys_wup_bu=1;//开机数据唤醒
sys_slp_nu=arr_slp.vals[3];//设置无数据自动休眠时长为数组缓存值
}
num_time.fontColor=0xffff0000;//将时间显示的字体颜色设为红色//表示设置完成
6.7. 恢复默认(按钮)
按下按钮恢复默认设置
脚本如下:
//按下恢复默认,将默认设置数组值赋值给休眠相关的各系统变量,确认修改
//设置休眠等级,S系列不支持修改,仅支持普通休眠,G系列支持深度休眠
//if(arr_default.vals[0]==0)
//{
// sys_slp_cls=0;
// t_slp_cla.press=1;
//}
//else
//{
// sys_slp_cls=1;
// t_slp_cla.press=0;
//}
//根据默认状态数据数组,设置休眠类型和时间
if(arr_default.vals[1]==1&&arr_default.vals[2]==0)//设置休眠类型为触摸唤醒,设置无触摸自动休眠时间
{
sys_wup_bt=1;
sys_wup_bu=0;
sys_slp_nt=arr_default.vals[3];
num_time.val=arr_default.vals[3];
t_slp_typ.press=0;//反馈休眠类型双态按钮的状态
}
else if(arr_default.vals[1]==0&&arr_default.vals[2]==1)
{
sys_wup_bt=0;
sys_wup_bu=1;
sys_slp_nu=arr_default.vals[3];
num_time.val=arr_default.vals[3];
t_slp_typ.press=1;
}
num_time.fontColor=0xffff0000;//时间显示字体为红色表示处于休眠开启状态
6.8. 设为默认(按钮)
按下将目前设置的参数设为默认设置
脚本如下:
//arr_default.vals[0]=arr_slp.vals[0];
//将休眠的设置数据保存为默认设置;
arr_default.vals[1]=arr_slp.vals[1];
arr_default.vals[2]=arr_slp.vals[2];
arr_default.vals[3]=arr_slp.vals[3];
7. 实验结果
开启休眠,休眠类型改为触摸,自动休眠时间改成5,点击确定,五秒之后背光关,再次触摸背光亮;