#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <stdbool.h>
#include <stdlib.h>
#include <linux/input.h>
int ts_fd; // 文件描述符
// 获取坐标
int get_x_y(int *x, int *y)
{
// 生成结构体
struct input_event ie;
while (1)
{
read(ts_fd, &ie, sizeof(struct input_event));
// 判断是不是属于触摸
if (ie.type == EV_ABS)
{
if (ABS_X == ie.code)
{
*x = ie.value;
}
if (ABS_Y == ie.code)
{
*y = ie.value;
}
}
// 判断松开和按下屏幕
if (ie.type == EV_KEY && ie.code == BTN_TOUCH)
{
if (ie.value == 0)
{
printf("松开\n");
break;
}
else
{
printf("按下\n");
}
}
}
}
int main()
{
// 1、打开液晶屏,做内存映射
ts_fd = open("/dev/input/event0", O_RDWR);
if (ts_fd == -1)
{
perror("open ts");
return -1;
}
int x, y;
while (1)
{
get_x_y(&x, &y);
// 获取x y轴坐标
printf("x=%d,y=%d\n", x, y);
}
return 0;
}
案例四-6818开发板获取触摸屏的x轴和y轴
于 2024-09-09 09:56:08 首次发布