我是看增值资料里的指纹识别的程序看到的,回头又看了T9的那个库函数版本。
在此贴上的是指纹识别模块里的源码。
1、不太明白标红的地方,如果触屏按下,根据key=i*3+j+1; 这句,key必不为0,但是在某个屏幕没有被按下的瞬间,key_x就会由最外层的else if置0,那标红的这句有什么意义吗?感觉不会进入这句呀。
2、第二个不明白的是标蓝的地方,假设我们是第一次触摸触摸屏,那key_x就还是初始的0,
首先,我不明白一个无符号数0再减1,得到什么? 这样传递给AS608_key_staset后取余或整除,得到的是什么?
其次,这句放在这里有什么用?最外层的else语句已经把没有触摸屏幕时候,原先触摸的那个区域恢复成白 {MOD}了,那这句放在这是不是多此一举?
//得到触摸屏的输入
//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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>