下面代码有两个功能函数,get_slide()用于滑屏和获取点击坐标,而get_ts()仅用于获取一次点击坐标。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>      //输入子系统头文件 //触摸屏文件路径
#define TS_DEV "/dev/input/event0"
//获取的(x,y)坐标
int ts_x,ts_y;/*
功能: 获取一次划动的方向或点击坐标
返回值:1-->右滑; 2-->左滑; 3-->上滑; 4-->下滑; 5-->点击(获取到点击坐标)*/
int get_slide()
{int x1, x2, y1, y2;int flag = 0;      //记录当前获取到的坐标的个数 : 0 --> 无;  1-->横坐标;  2-->横纵坐标struct input_event xy;//1, 打开触摸屏文件int fd = open(TS_DEV, O_RDWR);if(-1 == fd){perror("open ts failed");return -1;}//2, 读取分析触摸屏数据 -->获取起点坐标while(1)    {read(fd, &xy, sizeof(xy));     //如果触摸屏文件中没有数据-->程序在此阻塞!if(xy.type == EV_ABS && xy.code == ABS_X && flag == 0){flag = 1;x1 = xy.value *800/1024;     //对获取的坐标进行等比例换算}if(xy.type == EV_ABS && xy.code == ABS_Y && flag == 1){flag = 2;y1 = xy.value *480/600;}    if(flag == 2)     //获取的第一个坐标就是起点坐标{flag = 0;printf("start : (%d, %d)\n", x1, y1);break;        }           }x2 = x1;  y2 = y1;//获取终点坐标 (x2, y2)while(1)  {read(fd, &xy, sizeof(xy));     //如果触摸屏文件中没有数据-->程序在此阻塞!if(xy.type == EV_ABS && xy.code == ABS_X ){x2 = xy.value *800/1024;     //对获取的坐标进行等比例换算}if(xy.type == EV_ABS && xy.code == ABS_Y ){y2 = xy.value *480/600;}    if(xy.type == EV_KEY && xy.code == BTN_TOUCH && xy.value == 0)//压力值为0的时候此时获取终点坐标{printf("end : (%d, %d)\n", x2, y2);break;  }           }//判断终点位置相对起点的位置if(x2>x1 && (y2-y1)*(y2-y1) < (x2-x1)*(x2-x1))    //右划{printf("right slide -->\n");close(fd);return 1;}if(x2<x1 && (y2-y1)*(y2-y1) < (x2-x1)*(x2-x1))  //左划{printf("left slide <--\n");close(fd);return 2;}   if(y2<y1 && (y2-y1)*(y2-y1) > (x2-x1)*(x2-x1))    //上划{printf("up slide ^\n");close(fd);return 3;}  if(y2>y1 && (y2-y1)*(y2-y1) > (x2-x1)*(x2-x1))    //下划{printf("down slide v\n");close(fd);return 4;}if(x1 == x2 && y1 == y2)    //不划{printf("点击 !\n");ts_x = x1;ts_y = y1;close(fd);return 5;}
}/*************************************************************************************/
//获取一次点击触摸屏坐标函数
int get_ts()
{//1, 打开触摸屏文件int fd = open(TS_DEV, O_RDWR);if(-1 == fd){perror("open ts failed");return -1;}//2, 读取分析触摸屏数据int flag = 0;       //记录当前获取到的坐标的个数 : 0 --> 无;  1-->横坐标;  2-->横纵坐标struct input_event xy;while(1)   //触摸屏坐标范围: 1024 * 600       LCD : 800*480{read(fd, &xy, sizeof(xy));        //如果触摸屏文件中没有数据-->程序在此阻塞!if(xy.type == EV_ABS && xy.code == ABS_X && flag == 0){flag = 1;ts_x = xy.value *800/1024;       //对获取的坐标进行等比例换算}if(xy.type == EV_ABS && xy.code == ABS_Y && flag == 1){flag = 2;ts_y = xy.value *480/600;}  if(flag == 2){flag = 0;break;}}//3, 关闭触摸屏文件close(fd);
}

获取触摸屏点击坐标和滑屏判断函数相关推荐

  1. 欢乐鼠标自动点击器_使用ESP32 DIY蓝牙自动点击器,滑屏器

    前言 因为爱薅羊毛,然后正好最近免费车一趟接一趟,咪咕开完,京东开,京东开完掌阅开,下一个不知道是谁,,,,可我又不是什么很有耐心的人,虽然我喜欢看书,但是如果规定时间,加上页数限制我就很烦,所以我还 ...

  2. js获取鼠标点击坐标

    转载自:http://www.cnblogs.com/dolphinX/archive/2012/10/09/2717119.html 在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经 ...

  3. Java 获取鼠标点击坐标

    Java 窗体的使用,获取鼠标右键点击的坐标,其中使用了匿名内部类 import java.awt.FlowLayout; import java.awt.event.MouseAdapter; im ...

  4. 使用adb指令获取手机点击坐标

    首先,进入adb shell模式: adb shell 输入getevent监听手机事件 getevent 然后就可以点击手机了,点完后,打印控制台会有类似以下的信息: 其中以003 0035和003 ...

  5. linux触摸屏信息,如何使用Linux获取触摸屏原始数据的坐标

    拥有3m的microtouch显示器.它通过USB连接到我的debian系统,并重新识别为人机界面(hid).我正在尝试访问和推送实时信息-如果被触摸,我想知道(x,y)的位置,并将其通过netcat ...

  6. Swiper4.0:H5手机端滑屏判断当前页Index并且触发动画(slideChangeTransitionEnd与swiper.activeIndex)

    API: https://www.swiper.com.cn/api/event/92.html var mySwiper = new Swiper('.swiper-container', {dir ...

  7. Appium基础篇14-上下左右滑屏操作swipe方法

    本篇来学习webdriver.py下一个滑屏操作,这个方法叫swipe,这个方法只是手机端appium的方法,不是selenium3的方法.在介绍滑屏操作之前,你需要了解如何得到屏幕的高和宽,因为每个 ...

  8. Unity 获取鼠标点击转换世界坐标

    /// <summary> /// 获取鼠标点击坐标 /// </summary> Vector3 screenPosition;//将物体从世界坐标转换为屏幕坐标 Vecto ...

  9. opengl中如何确定鼠标的点击坐标在一个圆柱体范围之内?

    在OpenGL中确定鼠标点击坐标在圆柱体范围内的方法有多种.一种常用的方法是使用投影和反投影矩阵.首先,你需要在渲染圆柱体之前设置投影矩阵,然后在鼠标点击事件中获取当前点击坐标.接下来,使用反投影矩阵 ...

最新文章

  1. 高性能服务器开发之C++定时器
  2. 他是我们内心世界的一员 (见信息时报2011年7月10日)
  3. 我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付
  4. boost库学习入门篇
  5. 你搞清楚「NULL」、「0」、「'0'」、「0」「\0」了吗?
  6. ext get id js_Ext.getCmp(“id”) 简单应用 | 学步园
  7. tomcat 在WIN10 上运行出现500错误的解决方法
  8. request.getParameterMap()使用
  9. Java 用POST方式 传对象给 Servlet
  10. Linux内核虚拟内存之页表管理
  11. 关于JAVA输入输出流造成的Runtime线程阻塞问题【新人笔记】
  12. 详细vue脚手架安装教程
  13. JavaWeb之Servlet-注册页面
  14. Unbuntu ./btest : cannot execute binary file: Exec format error解决方案(CSAPP)
  15. D - 暴力[百钱百鸡(稍简单)]
  16. python输出复数去掉括号_从字符串中删除常用词(及其复数形式)的技术
  17. Python爬虫 - 统计自己读过小说的字数
  18. 7-13 打印金字塔图案
  19. android 如何从 3.55mm耳机接口 读取数据,USB Type-C接口详细定义,自制Type-C转3.5mm耳机转接线...
  20. 【无标题】非专业45岁,目标:Python对表格的识别转换。(1)基础识别

热门文章

  1. 一名真学渣的秋招之路
  2. iOS —— xcode14兼容 iOS9~iOS10系统
  3. 如何在Tableau中的县级上映射数据
  4. Android 动画标签——scale
  5. 计算机无法播放qsv文件,怎么把电脑上的qsv格式转换成常用的mp4格式
  6. ubuntu系统使用命令行将文件拷贝到u盘里
  7. Qt如何在textEdit当中分多行显示不同类型数据
  8. IT痴汉的工作现状21-Android开发前景论
  9. 我国现在整个银行业及和它相关的行业(证券,保险,IT业)的一些大概情况
  10. catalog database 的配置