OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5019|回复: 3

精英库函数,T9拼音虚拟键盘,main函数里关于得到触摸屏的输入,有点疑惑

[复制链接]

13

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2019-3-14
在线时间
25 小时
发表于 2019-4-29 00:37:03 | 显示全部楼层 |阅读模式
1金钱
我是看增值资料里的指纹识别的程序看到的,回头又看了T9的那个库函数版本。
在此贴上的是指纹识别模块里的源码。


1、不太明白标红的地方,如果触屏按下,根据key=i*3+j+1; 这句,key必不为0,但是在某个屏幕没有被按下的瞬间,key_x就会由最外层的else if置0,那标红的这句有什么意义吗?感觉不会进入这句呀。

2、第二个不明白的是标蓝的地方,假设我们是第一次触摸触摸屏,那key_x就还是初始的0,
      首先,我不明白一个无符号数0再减1,得到什么? 这样传递给AS608_key_staset后取余或整除,得到的是什么?
      其次,这句放在这里有什么用?最外层的else语句已经把没有触摸屏幕时候,原先触摸的那个区域恢复成白色了,那这句放在这是不是多此一举?

//得到触摸屏的输入
//x,y:键盘坐标
//返回值:(1~15,对应按键表)
u8 AS608_get_keynum(u16 x,u16 y)
{
        u16 i,j;
        static u8 key_x=0;//0,没有任何按键按下
        u8 key=0;
        tp_dev.scan(0);                  
        if(tp_dev.sta&TP_PRES_DOWN)//触摸屏被按下
        {       
                for(i=0;i<5;i++)
                {
                        for(j=0;j<3;j++)
                        {
                                 if(tp_dev.x[0]<(x+j*80+80)&&tp_dev.x[0]>(x+j*80)&&tp_dev.y[0]<(y+i*30+30)&&tp_dev.y[0]>(y+i*30))
                                {       
                                        key=i*3+j+1;         
                                        break;                           
                                }
                        }
                        if(key)
                        {          
                                if(key_x==key)key=0;
                                else
                                {
                                        AS608_key_staset(x,y,key_x-1,0);
                                        key_x=key;
                                        AS608_key_staset(x,y,key_x-1,1);
                                }
                                break;
                        }
          }  
        }else if(key_x)
        {
                AS608_key_staset(x,y,key_x-1,0);
                key_x=0;
        }
        return key;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2019-3-14
在线时间
25 小时
 楼主| 发表于 2019-4-29 21:06:03 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2019-4-30 01:18:06 | 显示全部楼层
仿真分析问题
回复

使用道具 举报

0

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2018-3-20
在线时间
74 小时
发表于 2022-6-16 16:38:21 | 显示全部楼层
帮顶            
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 00:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表