wudingqinglang
Vivian LSR
采纳率0%
2021-05-05 13:17

IMX6ULL开发板如何读取触摸屏坐标

IMX6ULL开发读取手指点击触摸屏的坐标,我的方法如下



#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <strings.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/input.h>
#include <sys/mman.h>
#include <asm/types.h>






int anxia(int dev_fd,int* x,int* y)
{
	struct input_event event;	
	printf("24\n");
	while(1)
	{
		read(dev_fd,&event,sizeof(struct input_event));
		printf("%d\n", EV_ABS);
		printf("%d\n", event.type);//这两个问题不大,可以相等
		printf("--------1\n");
		printf("%d\n", event.code);
		printf("%d\n",ABS_X);
		printf("---------2---\n");
		if(event.type == EV_ABS && event.code == ABS_X)//event.code一直不为0
		{
			printf("29\n");
			*x = event.value;
		}
		if(event.type == EV_ABS && event.code == ABS_Y)
		{
			printf("34\n");
			*y = event.value;
		}
		if((event.type == EV_KEY)&&(event.code == BTN_TOUCH)&&(event.value ==1))	//按下
		{

			printf("x = %d,y = %d\n",*x,*y);
			return 0;
		} 
	}
}

int main(int argc, char const *argv[])
{
	int x ,y ;
    int x1 ;
    int y2 ;
	int dev_fd = open("/dev/input/event1",O_RDONLY);
	if(dev_fd == -1)
	{
		perror("open dev error");
		return -1;
    }
    printf("%d\n", dev_fd );
   while(1)
   {
	   	anxia(dev_fd,&x,&y);
	    sk(dev_fd,&x1,&y2);
	    printf("---------------------\n");
   }

	return 0;
}

结果打印出来的结果是这个

 

 

无法进入,if(event.type == EV_ABS && event.code == ABS_X)

而且为什么在使用触摸屏时已经确定type为3,但code有50????

我确定触摸屏在event1

用hexdump /dev/input/event1打印有结果

为什么我的方法读不出坐标,正确的方法是什么

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • technologist_24 CSDN技术专家团-黄老师 7天前

    参考一下https://cdmana.com/2020/11/202011301533016009.html,希望对你有帮助

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 7天前

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享

相关推荐