粤嵌GE6818实现识别触摸坐标的识别

简介: 粤嵌GE6818实现识别触摸坐标的识别

代码

// main.c
#include "bmp.h"
int main()
{ 
  get_xy();
}
// lcd.c
#include "bmp.h"
int fd = 0;
void get_xy ()
{
  int fd = open ("/dev/input/event0",O_RDWR);
  if(fd == -1 )
  {
    perror("open error\n");
    return ;
  }
  struct input_event ev;
  int x,y;
  while(1)
  {
    int r =read(fd,&ev,sizeof(ev));
    if(r != sizeof(ev))
    {
      perror("read ev error\n");
      return ;
    }
    if(ev.type == EV_ABS && ev.code ==ABS_X)
    {
      x = ev.value ;
    }
    if(ev.type == EV_ABS && ev.code ==ABS_Y)
    {
      y = ev.value ;
    }
    printf("(%d , %d)\n",x,y);
    
  }
}

// bmp.h
#ifndef __BMP_H__
#define __BMP_H__

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <linux/input.h>
void get_xy ();
#endif

效果图

原理分析

linux的输入子系统:

把所有的输入设备 都归结到输入子系统中去。
输入设备: 鼠标  键盘  触摸屏 
 
他有一个专门的结构体来保存这些事件。
这个结构体在哪里呢? /dev/input/event0
 
struct input_event 用来描述一盒输入事件 定义<linux/input.h>
{
    _u16 type : 表示我这个输入事件的类型
                EV_KEY :按键事件
                EV_REL:  相对事件 : 鼠标事件
                EV_ABS : 绝对事件  :  触摸屏事件
                 
    _16 code : code的含义 根据我type的不同 而不同
            if  ( type == EV_KEY)
                code == 按键的键值 
                    KEY_A
                    KEY_B
                    ...
                #define BTN_TOUCH 0X14A ; //触摸屏按键
             
            if (type ==EV_REL)
                code = 相对坐标轴
                REL_X   相对坐标轴的X轴
                REL_Y   相对坐标轴的Y轴
                 
            if (type == EV_ABS)
                code =绝对坐标轴 (触摸屏)
                ABS_X  绝对坐标轴的X轴
                ABS_Y  绝对坐标轴的Y轴
     
    _s32  value: 根据我type的不同 而不同
     
            if(type == EV_KEY)
            {
                if(code ==BTN_TOUCH)
                {
                        value = 1 : 说明我这个按键是按下状态
                        Value = 0 :  说明我这个按键是松开状态
                }
            }
         
            if(type == EV_ABS )
            {
                if(code == ABS_X)
                     value = 绝对坐标轴的X轴的值
                if(code == ABS_Y)
                     value = 绝对坐标轴的Y轴的值
            }          
     
}
我们的应用 就是不停地去读取我这个 结构体地信息。
 
练习: 获取手指在屏幕上点击的坐标 
第一步: 打开我这个linux输入子系统  open(“/dev/input/event0 ”,。。。)
 
第二步: 去读取这个结构体里面的信息。 自定义一个结构体 struct input_event ev
            read(fd,&ev,sizeof(ev)); while(1);
         
第三步: 分析我上面讲解地这三项 ,获得触摸地绝对坐标轴值
 
第四步: 关闭输入子设备
相关文章
|
弹性计算 NoSQL 关系型数据库
ECS迁移问题之ECS往本地迁移如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
存储 Shell Linux
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 限制进程资源 ulimit命令 使用指南
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 限制进程资源 ulimit命令 使用指南
536 0
|
Ubuntu Linux Docker
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
1484 0
|
Kubernetes Linux Docker
极简的配置单节点Kubernetes(k8s)集群
在传统的概念当中,Docker是简单易用的,Kubernetes是复杂强大的。 深入了解之后会发现Docker的简单是因为用户可以从基本功能开始用起, 只需要一台Linux主机,运行一下apt-get install docker-engine 或者yum install docker-engine,立马就可以用docker run启动一个新的容器, 整个过程与用户之前积累的Linux软件使用体验高度一致。
6837 0
|
12月前
|
移动开发 Java 测试技术
HarmonyOS NEXT~鸿蒙系统与mPaaS三方框架集成指南
本文详细介绍了鸿蒙系统(HarmonyOS)与mPaaS框架的集成方法。鸿蒙系统作为华为开发的分布式操作系统,具备分布式架构、微内核设计等特性;mPaaS是蚂蚁金服推出的移动开发平台,提供金融级组件和全生命周期管理能力。文章从环境准备、核心功能集成(如初始化、用户认证、支付功能)、适配问题解决到调试测试及最佳实践,全方位指导开发者高效集成两者。通过遵循指南,可充分利用鸿蒙的特性和mPaaS的金融能力,构建高性能、高安全性的应用,同时避免常见兼容性问题,缩短开发周期。
627 0
|
人工智能 自然语言处理 前端开发
面向六个月后的 AI Code,也许影响的不只是前端
本文探讨了AI在编程领域的快速发展及其对程序员职业的影响。随着AI技术的不断进步,特别是Codebase Indexing和MCP(Model Context Protocol)等技术的应用,AI已能够更好地理解企业内部知识并生成符合项目规范的代码。文章指出,未来六个月AI代码生成将形成“规范驱动→知识沉淀→协议贯通→智能执行”的闭环架构,大幅提升开发效率。同时, Anthropic CEO Dario Amodei预测,初级程序员可能在18个月内被AI取代,强调了职业规划更新的重要性。文章还对比了Function Call与MCP的技术路线,并提供了相关参考链接。
1082 72
面向六个月后的 AI Code,也许影响的不只是前端
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
923 23
|
存储 JSON 数据库
鸿蒙元服务项目实战:备忘录内容编辑开发
富文本内容编辑我们直接使用RichEditor组件即可,最重要的就是参数,value: RichEditorOptions,通过它,我们可以用来设置样式,和获取最后的富文本内容,这一点是很重要的。
392 5
鸿蒙元服务项目实战:备忘录内容编辑开发
|
Java Maven
maven子模块无法继承父模块的jar包解决方案
maven子模块无法继承父模块的jar包解决方案
670 120
|
应用服务中间件 Android开发
Server Tomcat v9.0 Server at localhost failed to start问题的解决
Server Tomcat v9.0 Server at localhost failed to start问题的解决
1560 0