精华内容
下载资源
问答
  • 触摸屏文件数据被封装在input.h文件中的input_event这个结构体中 #include "get_xy.h" int getxy() { //1.打开触摸屏文件 int fd = open(TS_PATH, O_RDWR); if (fd == -1) { perror("open failed!"); return -...

    (/usr/include/linux/input.h)
    触摸屏文件数据被封装在input.h文件中的input_event这个结构体中

    #include "get_xy.h"
    int getxy()
    {
        //1.打开触摸屏文件
        int fd = open(TS_PATH, O_RDWR);
        if (fd == -1)
        {
            perror("open failed!");
            return -1;
        }
        //2.读取触摸屏文件数据
        struct input_event xy;
    	int x, y;	//存放点击屏幕的横纵坐标
    	int flag = 0; //记录当前获取坐标的信息
        while (1)
        {
            read(fd, &xy, sizeof(xy));
            if(xy.type == EV_ABS && xy.code == ABS_X)
            {
                x = xy.value*800/1024;//获取点击的时候X轴坐标的值 (0~1024)--> (0~800)
    			flag = 1;
            }
    		if(xy.type == EV_ABS && xy.code == ABS_Y)
            {
                y = xy.value*480/600;	//获取点击的时候Y轴坐标的值 (0~600)-->(0~480)
    			flag = 2;
            }
            //设置条件:每读取一次完整的坐标,就打印一次坐标
    		if(flag == 2)
    		{
    			printf("(%d,%d)\n", x, y);
    			flag = 0;
    			break;//获取一次坐标就跳出循环
            }
        }
        //3.关闭触摸屏文件
    	close(fd);
        return 0;
    }
    

    get_xy.h

    #ifndef _GET_XY_H
    #define _GET_XY_H
    
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <linux/input.h>	//输入子系统的头文件
    
    #define TS_PATH "/dev/input/event0"
    int getxy();
    
    #endif
    
    展开全文
  • 触摸屏获取坐标

    2021-08-14 15:11:56
    触摸屏获取坐标 1)触摸屏代码的思路 第一步:打开触摸屏的驱动("/dev/input/event0") 第二步:读取触摸屏坐标 第三步:关闭触摸屏 2)输入子系统模型(了解原理即可,等你学习驱动的时候再深入掌握) 概念:...

    触摸屏获取坐标
    1)触摸屏代码的思路
        第一步:打开触摸屏的驱动("/dev/input/event0")
        第二步:读取触摸屏的坐标
        第三步:关闭触摸屏
        
    2)输入子系统模型(了解原理即可,等你学习驱动的时候再深入掌握)
        概念:linux把所有输入类型设备(键盘,鼠标,触摸屏)的驱动统一成了一个模型--》输入子系统模型
        linux为了统一,就搞出了输入子系统模型这个概念,所有的人开发linux上键盘,鼠标,触摸屏的驱动都必须按照输入子系统模型规定好的参数,变量去写代码
        linux提供的跟输入子系统模型有关的头文件
        /usr/include/linux/input.h
        输入子系统模型中的重要结构体
        struct input_event
        {
            type; //表示事件类型  EV_KEY 键盘的驱动   EV_ABS 触摸屏的驱动
            code; //表示按键的键值,x,y坐标  ABS_X    ABS_Y
            value; //表示坐标值
        }
        
    3)开发板触摸屏的坐标跟液晶屏的分辨率不一致
        液晶屏的分辨率:800*480
        开发板的触摸屏坐标:1024*600
        把获取的坐标(x,y)
        //x=x/1024*800; y=y/600*480;    //由于整形/整形得不到分数,只会得到(0,0)
        x=x*800/1024; y=y*480/600;        //先乘后除

     

    #include <stdio.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <linux/input.h>
    
    
    int t_x,t_y;//保存获取的屏幕坐标(x,y)
    
    //读取屏幕坐标(x,y)
    int get_ts()
    {
    	struct input_event ts;
    
    	//打开触摸屏驱动
    	int fd_ts=open("/dev/input/event0",O_RDWR);
    	if(-1==fd_ts)
    	{
    		perror("open ts failed\n");
    		return -1;
    	}
    	while(1)
    	{	//循环读取文件
    		read(fd_ts,&ts,sizeof(ts));
    		if(ts.type==EV_ABS)//是触摸屏驱动
    		{
    			if(ts.code==ABS_X)//x坐标
    				t_x=ts.value;
    			if(ts.code==ABS_Y)//y坐标
    				t_y=ts.value;
    		}
    		//ts.type=EV_KEY--》开关, 按下时ts.value=1;抬手时ts.value=0
    		if(ts.type==EV_KEY && ts.code==BTN_TOUCH && ts.value==0)
    			break;
    	}
    	//关闭文件
    	close(fd_ts);
    }
    
    
    int main(int argc,char **argv)
    {
    	while(1)
    	{
    		get_ts();
    		printf("(%d,%d)\n",t_x,t_y);
    	}
    	
    	return 0;
    }

     

    展开全文
  • 嵌入式linux应用层读取触摸屏简单示例 linux下面触摸屏读取方法就是读取/dev/input/event*事件 1、检查event编号 hexdump /dev/input/event1 按触摸屏会输出信息的就是触摸屏对应文件 000b9b0 0003 0032 0017 0000 1...

    嵌入式linux应用层读取触摸屏简单示例

    linux下面触摸屏读取方法就是读取/dev/input/event*事件

    1、检查event编号

    hexdump /dev/input/event1

    按触摸屏会输出信息的就是触摸屏对应文件
    000b9b0 0003 0032 0017 0000 1b59 0000 0000 0000
    000b9c0 09f2 000e 0000 0000 0003 0039 0000 0000
    000b9d0 1b59 0000 0000 0000 09f2 000e 0000 0000
    000b9e0 0000 0002 0000 0000 1b59 0000 0000 0000
    2、打开文件

    fd = open("/dev/input/event1",O_RDWR);
    

    3、读取文件解析

    read(ts_fd,&ts,sizeof(ts));
    if(ts.type == EV_ABS && ts.code == ABS_X)
    {
    	x = ts.value;
    	cnt++;
    }
    if(ts.type == EV_ABS && ts.code == ABS_Y)
    {
    	y = ts.value;
    	cnt++;
    }
    

    解析说明

    在Linux内核的include\linux\input.h定义如下

    struct timeval {
    __kernel_time_t tv_sec; /* seconds,32bit /
    __kernel_suseconds_t tv_usec; /
    microseconds,32bit */
    };

    struct input_event {
    struct timeval time; //时间
    __u16 type; //事件类型
    __u16 code; //事件键值
    __s32 value; //值
    };

    #define EV_SYN 0x00 //同步事件,用于分隔事件
    #define EV_KEY 0x01 //按键事件,例如按键、鼠标按键、触摸屏按键
    #define EV_REL 0x02 //相对位置事件,常见于鼠标坐标
    #define EV_ABS 0x03 //绝对位置事件,常见于触摸屏坐标

    #define KEY_1 2
    #define KEY_2 3
    #define KEY_3 4

    #define KEY_A 30
    #define KEY_S 31
    #define KEY_D 32

    当type == EV_KEY,
    code表示是哪一个按键发生的事件,
    value:0表示按键松开,1表示按键按下

    当type == EV_ABS
    code表示绝对坐标轴向,当code ==ABS_X时
    value表示x坐标轴的值
    code表示绝对坐标轴向,当code ==ABS_Y时
    value表示Y坐标轴的值

    c编程示例
    touch.c

    #include <stdio.h>
    #include <errno.h>
    #include <linux/input.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    
    
    static int fd = 0;
    static struct input_event ts;
    
    int touch_init()
    {
    	fd = open("/dev/input/event1", O_RDONLY);
    	if(fd == -1)
    	{
    		printf("[%s]:[%d] open event file error\r\n", __FUNCTION__, __LINE__);
    	}
    }
    
    int get_xy(int *x,int *y)
    {
    	read(fd,&ts,sizeof(ts));
    	if(ts.type == EV_ABS && ts.code == ABS_X)
    	{
    		*x = ts.value;
    		return 0;
    	}
    	if(ts.type == EV_ABS && ts.code == ABS_Y)
    	{
    		*y = ts.value;
    		return 0;
    	}
    	
    	return -1;
    }
    

    main.c

    #include <stdio.h>
    
    int main()
    {
    	int x,y,tmp;
    	touch_init();
    	while(1)
    	{
    		tmp = get_xy(&x, &y);
    		if(tmp == 0)
    		{
    			printf("get position x:%d,y:%d\r\n",x,y);
    		}
    	}
    }
    
    展开全文
  • 利用触摸屏获取事件坐标

    千次阅读 2017-11-02 02:49:00
    所以也就对触摸屏这块下了点功夫...首先就说说如何让我们自己的程序也享受触摸屏带来的乐趣.我用的是S3C6410开发板,在/dev下有触摸屏设备event1或者是event0这个是是具体情况而定的。我们都知道在linux下...
    近段时间一直在做SDL方面的东西,利用五一小假,做了几个小游戏....,在这给大家说说心得吧
    以为做出来的东西是要在开发板上工作的...所以也就对触摸屏这块下了点功夫...
    首先就说说如何让我们自己的程序也享受触摸屏带来的乐趣.
    我用的是S3C6410开发板,在/dev下有触摸屏设备event1或者是event0这个是是具体情况而定的。
    我们都知道在linux下,一切设备皆文件,当我们明白了这点的时候,你就会发现问题并不像我们想象中的那么
    复杂...我们可以查看我们的触摸屏头文件tslib.h;这个里面有很详细的内容,里面有两个结构体是我们在程序中
    要用到的..关于其具体介绍在我的另一篇文章中有详细的介绍, http://3417300.blog.51cto.com/3407300/837248
    感兴趣的可以看看,我就不再在这里累赘了。
    当然了,我们要操作这个设备,那我们自然是要以文件方式打开喽..
    在tslib.h中有函数ts_open;如果成功打开后就返回一个句柄,当然了这是我的理解了。
    进而进行配置,ts_config函数;
    剩下的工作就是我们读取触摸屏信息楼。自然我们会想到要
    ts_read。这样一切都搞定了,但程序在我们的开发板上运行以后,我们发现其结果并不是我们想要的。
    因为我们并没有消抖,我们自己感觉按下了一次,但在程序中出来了很多次..这个属正常现象,可是在我们的程序中是不需要这种正常现象的
    ,那该怎么办呢?
    你可以自己设计一个新算法,,来获取一个适当的额值,我的方法是只取第一个值,将其余的值都舍弃,,
    二这种办法最好的实现方法就是标记了,下面就以程序来说明具体问题...
    void *getCtrlMessage(void *junk)
    {
     int Flag = 1; 
        ts = ts_open("/dev/event1", 0);
     ts_config(ts) 
     for(;;)
     {
      if(ts_read(ts , &sample, 1))
      {
       if((sample.pressure) && (Flag == 1))
       {
        comparison(sample, RectArray, &virtualValue);
           Flag = 0; //防止处理那些由于抖动所产生触摸点信息   
       }
       if(sample.pressure == 0)
        Flag = 1;
      }            
     } 
     ts_close(ts);       
    }
    在最后的最后要提醒一点就是,当程序结束以后一定要记着close哟....

     


         本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/850080,如需转载请自行联系原作者



    展开全文
  • Android触摸屏坐标转换

    千次阅读 2017-01-10 23:09:23
    TP : 触摸屏(Touch Panel) LCD : 显示屏(Liquid Crystal Display)   在Android系统中,大多数的操作都是通过TP完成;这中间就涉及到将TP上报的触屏信息映射到LCD的像素坐标中,以保证显示的正确性。但一般...
  • 触摸屏坐标算法

    2012-01-06 23:55:59
    TP的坐标的读取、传输,算法、运算实现。
  • 触摸屏坐标与Qt坐标不一致 http://blog.sina.com.cn/s/blog_13f1c0bc40102xbxr.html
  • js获取移动端触摸坐标

    千次阅读 2018-02-06 11:57:30
    想在touchmove事件里监听手指按下的坐标,event.pageX获取的是undefined,changedTouches,targetTouches,touches也只获得到了鼠标按下时的坐标,没法持续监听,求帮助!或者其他办法也行,效果大概是一个元素,...
  • 述了电容触摸屏直边形电极、直角形电极和矩形框电极的坐标定位算法。在忽略电极的电阻时,构建二维 电容触摸屏的等效电路,推导了三种电极输出的触摸电流,用MATLAB...明,电极是影响电容触摸屏坐标定位的重要因素。
  • 引 言: 人机对话的界面种类有很多,比如显示器、LED、LCD及带触摸屏的LCD等。其中后者是最近几年刚发展起来的一项新技术,它通过计算机技术处理声音、图像、视频、文字、动画等信息,并在这些信息间建立一定的逻辑...
  • 想要弄明白LCD屏幕坐标和触摸屏坐标的关系,得先从LCD触摸屏的结构说起。一般我们接触到的触摸屏都有两层,一层是纯粹的LCD液晶显示面板,其上就是一层透明的触摸屏薄膜。要说的是,LCD显示屏和触摸屏都有各自的...
  • 主要为大家详细介绍了android获取手指触摸位置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 开发版>arm开发板触摸屏坐标获取

    千次阅读 2017-09-16 22:15:08
    1. 头文件 /* head file */ #ifndef __TS_XY__ #define __TS_XY__ struct ts_sample { int x; int y;...void ts_read(char *device, struct ts_sample *ts_sp);...2. 获取坐标功能函数 #include #include //o
  • 使用触摸屏时最重要的问题是确定坐标位置,即确定触点位置是否在该键的有效区域之内。由于51系列单片机的汇编语言不具备其它高级语言所具有的丰富库函数及逻辑运算能力,所以如何用51单片机简捷准确地完成这一任务,...
  • 51单片机系统中的触摸屏坐标算法。。。。。。
  • 触摸屏动态检测刷新坐标
  • 所以也就对触摸屏这块下了点功夫...首先就说说如何让我们自己的程序也享受触摸屏带来的乐趣.我用的是S3C6410开发板,在/dev下有触摸屏设备event1或者是event0这个是是具体情况而定的。我们都知道在linux下,一切设备...
  • LCD与触摸屏坐标转换

    千次阅读 2013-03-28 22:14:55
    想要弄明白LCD屏幕坐标和触摸屏坐标的关系,得先从LCD触摸屏的结构说起。一般我们接触到的触摸屏都有两层,一层是纯粹的LCD液晶显示面板,其上就是一层透明的触摸屏薄膜。要说的是,LCD显示屏和触摸屏都有各自的...
  • 该文档是汇顶触摸屏gt9xx系列驱动程序,已经过修改支持tslib(单点触摸)。
  • 动态触摸屏显示刷新坐标(更新)
  • 基于单片机的触摸屏坐标定位系统设计.pdf
  • 4.3 在每一个触摸点中会记录当前触摸点的坐标 e.touches[0] 第一个触摸点 4.4 clientX clientY 基于浏览器窗口(视口) 4.4 pageX pageY 基于页面(视口) 4.4 screenX screenY 基于屏幕 --> <div class="box">...
  • 触摸屏touchscreen是绝对定位设备。触控板touchpad是相对...触摸屏是以显示屏为参照的绝对定位设备其给出的数据是绝对坐标的。像ipad、iphone之类的面板都集成有触摸屏触摸屏在HID设备类当中是属于touch事件的设备。
  • 通过evtest.c可以查看设备事件消息,通过TouchScreen.c可以实现点触摸屏某个坐标,使用方式可以查看博客 关于linux模拟点击触摸屏操作的学习
  • 在Android开发过程中,有时需要获取触摸位置的坐标,以便作进一步处理,比如做炫酷的动画效果,或者响应其他操作。 本文简单介绍Android中触屏操作时,触屏的开始位置、当前位置、结束位置。 布局: <...
  • Cocos Creator 屏幕触摸坐标转换到本地坐标 - Camera让物体跟随触摸点 让物体跟随触摸点 touchMove(e:cc.Event.EventTouch){ //用位移偏差来改节点位置——遇到父节点或者摄像机有缩放就不行了 // this.node.x +=...
  • 百度地图获取手机屏幕坐标

    千次阅读 2016-04-11 20:28:43
    百度地图sdk获取手机屏幕左上右下的坐标经纬度前段时间开发项目中,使用了baiduSdk,有一个是需求是获取手机屏幕的左上右下的经纬度,当时候正也是醉了,没怎么用过baidu地图SDK,然后就自己摸索咯,在此记录一下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,997
精华内容 12,398
关键字:

如何获取触摸屏坐标