粤嵌6818开发板触摸屏应用

一、触摸屏应用

1.触摸屏设备的名字

在Linux下,一切皆文件,触摸屏也是一个文件。

触摸屏设备的名字:/dev/input/event0

2.触摸屏的两个专业术语

(1)事件 ->event0

当一些外接控制设备(鼠标、键盘,wifi,触摸屏,按键)接入到嵌入式平台(GEC6818)时,这些外接设备的状态发生了改变(鼠标的左键被按下了,键盘的R键被按下,有人连接上wifi了,触摸屏被滑动了一下,按键被按下了)时,这个动作就称之为事件.

(2)输入子系统 ->input

当事件发生的时候,就是由输入子系统来计算这些事件中产生的值。并将这些值整合到一个名为input_event结构体中。(例如:触摸屏被触摸后,输入子系统就会计算出被触摸的坐标值)

粤嵌6818开发板触摸屏应用_第1张图片

3.代码实现流程

     1.打开event0文件

     2.读取event0文件的数据

     3.判断事件类型,打印出数据

     4.关闭文件

4.触摸屏数据对应的类型

如果想知道从event0这个文件中读取出来的这个文件的数据是什么类型的,那么就必须先知道输入子系统计算完这个结果之后,是以什么形式放到这个event0这个文件中。

以前我们学习结构体的时候知道描述一个需要很多值的事件,我们可以使用结构体来描述,所以输入子系统处理好触摸屏数据后,也是将这些数据存放到一个结构体中。

该结构体已经定义好了,是被封装在一个头文件,头文件的路径在: /usr/include/linux/input.h

/* * The event structure itself   //事件结构体 */
struct input_event {       -> 专门用于描述一个事件。 
    struct timeval time;   -> 事件发生的时间。 
    __u16 type;            -> 事件的类型  (输入子系统会用这个值来描述刚才发生事件的硬件设备)
    __u16 code;            -> 事件的编码  -> 对事件进一步的描述 左键/右键  A键/R键  x轴/y轴 
    __s32 value;           -> 事件的值
};
​
struct timeval {        
    long    tv_sec;         /* 秒 */        
    long    tv_usec;        /* 微秒 */
 };

知道触摸屏数据是存放在一个结构体中后,那么我们可以写一段代码来打印出这些数据看看:

#include 
​
#include 
​
#include 
​
#include 
​
#include 
​
#include 
​
#include 
​
int main()
​
{
​
•    // 1.打开event0文件
​
•    int ts_fd;
​
•    ts_fd = open("/dev/input/event0", O_RDONLY);
​
•    i

你可能感兴趣的:(单片机,mcu,物联网,iot)