OpenEdv-开源电子网

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

战舰板--触摸屏PEN值与校准问题

[复制链接]

8

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2012-11-12
在线时间
22 小时
发表于 2013-1-26 11:32:22 | 显示全部楼层 |阅读模式

u8 TP_Scan(u8 tp)
{     
 if(PEN==0)//有按键按下
 {
  if(tp)TP_Read_XY2(&tp_dev.x,&tp_dev.y);//读取物理坐标
  else if(TP_Read_XY2(&tp_dev.x,&tp_dev.y))//读取屏幕坐标
  {
    tp_dev.x=tp_dev.xfac*tp_dev.x+tp_dev.xoff;//将结果转换为屏幕坐标
   tp_dev.y=tp_dev.yfac*tp_dev.y+tp_dev.yoff; 
   }
  if((tp_dev.sta&TP_PRES_DOWN)==0)//之前没有被按下
  {  
   tp_dev.sta=TP_PRES_DOWN|TP_CATH_PRES;//按键按下 
   tp_dev.x0=tp_dev.x;//记录第一次按下时的坐标
   tp_dev.y0=tp_dev.y;         
  }     
 }else
 {
  if(tp_dev.sta&TP_PRES_DOWN)//之前是被按下的
  {
   tp_dev.sta&=~(1<<7);//标记按键松开 
  }else//之前就没有被按下
  {
   tp_dev.x0=0;
   tp_dev.y0=0;
   tp_dev.x=0xffff;
   tp_dev.y=0xffff;
  }    
 }
 return tp_dev.sta&TP_PRES_DOWN;//返回当前的触屏状态

还有如下:

 while(1)//如果连续10秒钟没有按下,则自动退出
 {
  tp_dev.scan(1);//扫描物理坐标
  if((tp_dev.sta&0xc0)==TP_CATH_PRES)//按键按下了一次(此时按键松开了.)TP_CATH_PRES用来标记按键处理与否,只有当sta第八位为0才能处理程序
  { 
   outtime=0;  
   tp_dev.sta&=~(1<<6);//标记按键已经被处理过了.
              
   pos_temp[cnt][0]=tp_dev.x;
   pos_temp[cnt][1]=tp_dev.y;
   cnt++;  
   switch(cnt)

对于上述触摸屏程序中研究了许久,还有些不懂,望大侠能指点一二;
1.对于上面第一个红色部分,  tp_dev.x0=tp_dev.x;。在这里保存了X0后有什么用?是不是防止多次触摸,所以只需要读取第一次?但是就算是读取

   第一次,但是在校准中也就是第三个红色块中赋值给数组的时候为什么还是pos_temp[cnt][0]=tp_dev.x;(难道是读取触摸最后一次值)
2、当按键松开后,最后为什么还要对 tp_dev.x0=0;清零?

 

没人看你努力的过程,只看最后的结果。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-26 13:09:07 | 显示全部楼层
记录第一次按下的值,本想用作滑动检测的,不过后面没用到.
在按键松开后,清空触摸屏的坐标设置,防止其他程序误判.

x0,x1,只是记录第一次按下点的坐标,当前坐标还是存储在x,y里面的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2012-11-12
在线时间
22 小时
 楼主| 发表于 2013-1-26 21:30:59 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
哦哦,原来如此。自己把XO,YO删了,程序正常执行。谢原子大哥
没人看你努力的过程,只看最后的结果。
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-4-25 11:55:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
tp_dev.xfac=0;//xfac用来标记是否校准过,所以校准之前必须清掉!以免错误

这句删除后也就是说不用清零,好像也没什么影响?请问会出现什么错误呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-25 14:32:08 | 显示全部楼层
回复【4楼】chenyuedv:
---------------------------------
如果你没用到,就无影响.
这句你可以去掉.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-9-29
在线时间
0 小时
发表于 2014-10-14 16:32:58 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------

回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-9-29
在线时间
0 小时
发表于 2014-10-14 17:27:24 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子大哥,可以发一下m_tp_dev tp_dev=
{
TP_Init,
TP_Scan,
TP_Adjust,
0,
0, 
0,
0,
0,
0,     
0,
0,     
};
和这个有关的帖子么,不知道怎么找,然后,想问一下,触摸屏中,Flash有什么用啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-14 23:25:56 | 显示全部楼层
回复【7楼】疾风迅雷zzc:
---------------------------------
这就是个结构体啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 11:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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