自定义键盘
自定义键盘前需解锁键盘,请参考 键盘解锁和重置
进入键盘时自动将输入框清空
提示
其实就是在键盘的后初始化事件中将input.txt和show.txt赋值为空,请注意两个引号之间不要有空格,否则会导致转换失败的
完整的代码如下
1input.txt=""
2show.txt=""
键盘页面默认为拼音输入
当前工程的编码必须是GB2312,且当前配置的键盘必须为输入法键盘。
在页面的后初始化页面中去click中英切换按键(模拟人手去自动切换输入法)
键盘页面默认为英文大写
在页面的后初始化页面中去click caps按键(模拟人手去自动切换输入法)
键盘只能输入32个字符需要改成能输入更多的字符
将键盘页面的show.txt_maxl和input.txt_maxl的值改为你需要的值即可
如何让键盘的光标不闪烁
提示
关闭键盘页面的tm0控件使能即可
也可以在页面后初始化事件中判断跳转过来的控件的pw属性(需要文本控件,数字控件不支持pw属性)
完整的代码如下
1if(p[loadpageid.val].b[loadcmpid.val].type==116)
2{
3 if(p[loadpageid.val].b[loadcmpid.val].pw==1)
4 {
5 tm0.en=0
6 }else
7 {
8 tm0.en=1
9 }
10}
键盘页面限制输入数据的值
提示
通过定时器定时转换input.txt的数据到sys0中,然后对sys0的值进行判断
新建一个定时器tm0,将objname改为tmLimit,tim改为50,en设置为1,在 tmLimit 定时器中编写以下代码
1 covx input.txt,sys0,0,0
2 //区分不同页面的不同变量,实现对不同变量的不同限制
3 if(loadpageid.val==0&&loadcmpid.val==page0.n0.id)
4 {
5 if(sys0<0)
6 {
7 input.txt="0"
8 }else if(sys0>100)
9 {
10 input.txt="100"
11 }
12 }else if(loadpageid.val==0&&loadcmpid.val==page0.n1.id)
13 {
14 if(sys0<0)
15 {
16 input.txt="0"
17 }else if(sys0>50)
18 {
19 input.txt="50"
20 }
21 }else if(loadpageid.val==0&&loadcmpid.val==page0.n2.id)
22 {
23 if(sys0<0)
24 {
25 input.txt="0"
26 }else if(sys0>70)
27 {
28 input.txt="70"
29 }
30 }
在键盘页面按下OK键时将参数通过串口发送出去
1、以文本类型发送
提示
编辑ok按钮的弹起事件,在page指令前添加以下代码
注意
page指令之后的指令是不会被执行的,因为已经跳转到别的页面了。
提示
这里作为帧头的 55 并不固定,是可以修改为你自己定义的其他帧头,你可以定义多个字节作为帧头
00 01 02 是作为标记来区分n0.val、n1.val、n2.val,可以根据自己的需求进行更改
完整的代码如下
1//调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
2//loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
3if(p[loadpageid.val].b[loadcmpid.val].type==54)
4{
5 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
6}else if(p[loadpageid.val].b[loadcmpid.val].type==59)
7{
8 covx input.txt,temp.val,0,0
9if(temp.val<0)
10{
11 temp.val*=-1
12}
13for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
14{
15 temp.val*=10
16}
17p[loadpageid.val].b[loadcmpid.val].val=temp.val
18strlen input.txt,temp.val
19temp.val--
20while(temp.val>=0)
21{
22 substr input.txt,tempstr.txt,temp.val,1
23 if(tempstr.txt==".")
24 {
25 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
26 covx tempstr.txt,temp2.val,0,0
27 strlen tempstr.txt,temp.val
28 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
29 {
30 temp2.val*=10
31 temp.val++
32 }
33 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
34 temp.val=-1
35 }
36 temp.val--
37}
38substr input.txt,tempstr.txt,0,1
39if(tempstr.txt=="-")
40{
41 p[loadpageid.val].b[loadcmpid.val].val*=-1
42}
43}else
44{
45 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
46}
47//区分不同页面的不同变量
48if(loadpageid.val==0&&loadcmpid.val==page0.n0.id)
49{
50 printh 55 00 //先发送一个帧头,用来告诉下位机这个是n0
51 prints input.txt,0 //发送输入框内的数据
52 printh 0d 0a //发送帧尾
53}else if(loadpageid.val==0&&loadcmpid.val==page0.n1.id)
54{
55 printh 55 01 //先发送一个帧头,用来告诉下位机这个是n1
56 prints input.txt,0 //发送输入框内的数据
57 printh 0d 0a //发送帧尾
58}else if(loadpageid.val==0&&loadcmpid.val==page0.n2.id)
59{
60 printh 55 02 //先发送一个帧头,用来告诉下位机这个是n2
61 prints input.txt,0 //发送输入框内的数据
62 printh 0d 0a //发送帧尾
63}
64page loadpageid.val
2、以数值类型发送
提示
编辑ok按钮的弹起事件,在page指令前添加以下代码
注意
page指令之后的指令是不会被执行的,因为已经跳转到别的页面了。
提示
这里作为帧头的 55 并不固定,是可以修改为你自己定义的其他帧头,你可以定义多个字节作为帧头
00 01 02 是作为标记来区分n0.val、n1.val、n2.val,可以根据自己的需求进行更改
完整的代码如下
1 //调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
2 //loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
3 if(p[loadpageid.val].b[loadcmpid.val].type==54)
4 {
5 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
6 }else if(p[loadpageid.val].b[loadcmpid.val].type==59)
7 {
8 covx input.txt,temp.val,0,0
9 if(temp.val<0)
10 {
11 temp.val*=-1
12 }
13 for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
14 {
15 temp.val*=10
16 }
17 p[loadpageid.val].b[loadcmpid.val].val=temp.val
18 strlen input.txt,temp.val
19 temp.val--
20 while(temp.val>=0)
21 {
22 substr input.txt,tempstr.txt,temp.val,1
23 if(tempstr.txt==".")
24 {
25 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
26 covx tempstr.txt,temp2.val,0,0
27 strlen tempstr.txt,temp.val
28 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
29 {
30 temp2.val*=10
31 temp.val++
32 }
33 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
34 temp.val=-1
35 }
36 temp.val--
37 }
38 substr input.txt,tempstr.txt,0,1
39 if(tempstr.txt=="-")
40 {
41 p[loadpageid.val].b[loadcmpid.val].val*=-1
42 }
43 }else
44 {
45 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
46 }
47 //区分不同页面的不同变量
48 if(loadpageid.val==0&&loadcmpid.val==page0.n0.id)
49 {
50 //先发送一个帧头,用来告诉下位机这个是n0
51 printh 55 00
52
53 //将文本转换为数值
54 covx input.txt,sys0,0,0
55
56 //发送输入框内的数据
57 prints sys0,0
58
59 //发送帧尾
60 printh 0d 0a
61
62 }else if(loadpageid.val==0&&loadcmpid.val==page0.n1.id)
63 {
64 //先发送一个帧头,用来告诉下位机这个是n1
65 printh 55 01
66
67 //将文本转换为数值
68 covx input.txt,sys0,0,0
69
70 //发送输入框内的数据
71 prints sys0,0
72
73 //发送帧尾
74 printh 0d 0a
75 }else if(loadpageid.val==0&&loadcmpid.val==page0.n2.id)
76 {
77 //先发送一个帧头,用来告诉下位机这个是n2
78 printh 55 02
79
80 //将文本转换为数值
81 covx input.txt,sys0,0,0
82
83 //发送输入框内的数据
84 prints sys0,0
85
86 //发送帧尾
87 printh 0d 0a
88 }
89 page loadpageid.val
不同控件在系统键盘设置好参数存储到用户存储区
提示
编辑ok按钮的弹起事件,在page指令前添加以下代码
完整代码如下
1//调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
2//loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
3if(p[loadpageid.val].b[loadcmpid.val].type==54)
4{
5 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
6}else if(p[loadpageid.val].b[loadcmpid.val].type==59)
7{
8 covx input.txt,temp.val,0,0
9if(temp.val<0)
10{
11 temp.val*=-1
12}
13for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
14{
15 temp.val*=10
16}
17 p[loadpageid.val].b[loadcmpid.val].val=temp.val
18 strlen input.txt,temp.val
19 temp.val--
20 while(temp.val>=0)
21{
22 substr input.txt,tempstr.txt,temp.val,1
23 if(tempstr.txt==".")
24 {
25 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
26 covx tempstr.txt,temp2.val,0,0
27 strlen tempstr.txt,temp.val
28 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
29 {
30 temp2.val*=10
31 temp.val++
32 }
33 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
34 temp.val=-1
35 }
36 temp.val--
37}
38substr input.txt,tempstr.txt,0,1
39if(tempstr.txt=="-")
40{
41 p[loadpageid.val].b[loadcmpid.val].val*=-1
42}
43}else
44{
45 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
46}
47//区分不同页面的不同变量
48if(loadpageid.val==0&&loadcmpid.val==page0.n0.id)
49{
50 covx input.txt,sys0,0,0
51 //如果是n0,写在10的位置
52 wepo sys0,10
53}else if(loadpageid.val==0&&loadcmpid.val==page0.n1.id)
54{
55 covx input.txt,sys0,0,0
56 //如果是n1,写在14的位置
57 wepo sys0,14
58}else if(loadpageid.val==0&&loadcmpid.val==page0.n2.id)
59{
60 covx input.txt,sys0,0,0
61 //如果是n2,写在18的位置
62 wepo sys0,18
63}
64page loadpageid.val
注意
page指令之后的指令是不会被执行的,因为已经跳转到别的页面了。
存储变量类型为txt
完整的代码如下
1//调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
2//loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
3if(p[loadpageid.val].b[loadcmpid.val].type==54)
4{
5 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
6}else if(p[loadpageid.val].b[loadcmpid.val].type==59)
7{
8 covx input.txt,temp.val,0,0
9if(temp.val<0)
10{
11 temp.val*=-1
12}
13for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
14{
15 temp.val*=10
16}
17p[loadpageid.val].b[loadcmpid.val].val=temp.val
18strlen input.txt,temp.val
19temp.val--
20while(temp.val>=0)
21{
22 substr input.txt,tempstr.txt,temp.val,1
23 if(tempstr.txt==".")
24 {
25 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
26 covx tempstr.txt,temp2.val,0,0
27 strlen tempstr.txt,temp.val
28 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
29 {
30 temp2.val*=10
31 temp.val++
32 }
33 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
34 temp.val=-1
35 }
36 temp.val--
37}
38substr input.txt,tempstr.txt,0,1
39if(tempstr.txt=="-")
40{
41 p[loadpageid.val].b[loadcmpid.val].val*=-1
42}
43}else
44{
45 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
46}
47//区分不同页面的不同变量
48if(loadpageid.val==0&&loadcmpid.val==page0.t0.id)
49{
50 //如果是t0,写在100的位置,注意分配好存储所需的掉电存储空间空间
51 //此处仅为演示,默认的input.txt_maxl为32,会写入32+1=33个字节,占用100-132
52 wepo input.txt,100
53}else if(loadpageid.val==0&&loadcmpid.val==page0.t1.id)
54{
55 //如果是t1,写在120的位置,注意分配好存储所需的掉电存储空间空间
56 //此处仅为演示,默认的input.txt_maxl为32,会写入32+1=33个字节,占用120-152
57 wepo input.txt,120
58}else if(loadpageid.val==0&&loadcmpid.val==page0.t2.id)
59{
60 //如果是t2,写在140的位置,注意分配好存储所需的掉电存储空间空间
61 //此处仅为演示,默认的input.txt_maxl为32,会写入32+1=33个字节,占用140-172
62 wepo input.txt,140
63}
64page loadpageid.val
注意
page指令之后的指令是不会被执行的,因为已经跳转到别的页面了。