粤嵌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);
         
第三步: 分析我上面讲解地这三项 ,获得触摸地绝对坐标轴值
 
第四步: 关闭输入子设备
相关文章
圆形算法识别
圆形算法识别
|
2月前
|
机器学习/深度学习 算法 计算机视觉
人像检测的结果数据都有什么属性?
【10月更文挑战第26天】人像检测的结果数据都有什么属性?
66 1
|
2月前
fireworks怎么进行图片坐标识别?
fw查看图片的坐标的技巧
83 6
|
6月前
|
机器学习/深度学习 数据采集 计算机视觉
手势检测
【7月更文挑战第23天】
179 69
|
4月前
|
前端开发 定位技术 API
文字展示、坐标点给咱们返回
该React组件实现了基于高德地图API的地图功能,通过循环遍历后台数据动态创建并添加带有标签的标记(markers)至地图上。左侧的图例盒子采用绝对定位实现,包含缩放按钮与图例说明。点击+/-按钮可分别实现地图的放大与缩小,同时限制了地图的最大最小缩放级别为18和3。
16 0
|
6月前
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
算法 小程序 Java
图像中二维码的检测和定位
图像中二维码的检测和定位
1298 0
图像中二维码的检测和定位
|
编解码 前端开发 PHP
悬浮坐标解决方案:如何在图片获取xy鼠标位置和增加标注信息
悬浮坐标解决方案:如何在图片获取xy鼠标位置和增加标注信息
176 0
|
机器学习/深度学习 人工智能 文字识别
基于PP-OCRv3的车牌检测和识别
本项目基于百度飞桨[AI Studio平台](https://aistudio.baidu.com/aistudio/projectoverview/public/1)进行实现,百度出品的深度学习平台飞桨(PaddlePaddle)是主流深度学习框架中一款完全国产化的产品,与Google TensorFlow、Facebook Pytorch齐名。2016 年飞桨正式开源,是国内首个全面开源开放、技术领先、功能完备的产业级深度学习平台。相比国内其他平台,飞桨是一个功能完整的深度学习平台,也是唯一成熟稳定、具备大规模推广条件的深度学习平台。
419 0