linux 触屏测试

纠结一天的失去了,终于把能过熟悉使用触屏了,再次感谢前人开源。

由于触屏驱动的分辨率和实际使用显示器的分辨率不同所以要将触屏坐标映射到显示器上的坐标(PS:触屏的分辨率往往要大于显示器的分辨率)

映射公式:Sx = (Tx - Txmin)*Sxmax/(Txmax - Txmin);

                   Sy = (Ty - Tymin)*Symax/(Tymax - Tymin);

        其中:Sy为显示器y坐标值,Symax为已知显示器y坐标最大值,Tx为触屏驱动x值,Txmax为触屏校准时x最大值

程序如下

#include <stdio.h> 
#include <fcntl.h>
#include <linux/input.h>

int main()
{
 struct input_event ev;
 int ts[3] = {0};
 int ret = 0;
 int fd;
 if((fd=open("/dev/event1",O_RDONLY))<0)
 {
  printf("Can't open touch\n");
  return -1;
 }

  while(1)
  {
  ret = read(fd, &ev, sizeof(struct input_event));
  if(ret<sizeof(struct input_event)){printf("read ts error\n");break;}
  if(ev.type==EV_ABS)
  switch (ev.code)
      {
   case ABS_X:
    ts[0]=(ev.value-2800)/14;break; //value x
   case ABS_Y:
    ts[1]=(ev.value-5430)/11;;break; //value y
   case ABS_PRESSURE:
    ts[2] = ev.value;break; //pressure
  }
  if((!ts[2])&&(ts[0]>390&&ts[0]<410)&&(ts[1]<250&&ts[1]>230))
  printf("press the key!\n");
 }
 return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值