最小linux系统下读取/dev/input/event2触摸事件出现问题?

问题描述:
屏幕是1024*600电容屏,最小linux系统下想通过读取/dev/input/event2事件
获取触摸坐标值,已经顺利的读出值。
1.但是手指在0-1023像素点间移动时,读取到的却是0-599范围。
2.在0-599像素点间移动时,读取到的却是0-1023范围。

            读取部分代码如下:

int Judge_range_touch(void)
{

int mv = -1;
struct input_event data;
int temp_x,temp_y;
temp_x = temp_y = 0;
int input_fd = open("/dev/input/event2",O_RDONLY);
while(1)
{

    bzero(&data,sizeof(data));
    int ret = read(input_fd,&data,sizeof(data));
    if(ret == sizeof(data))//读取成功
    {

        //数据解析
        if(data.type == EV_ABS)
        {

            if(data.code == ABS_X)
            {
                temp_x = data.value;
            }
            if(data.code == ABS_Y)
            {
                temp_y = data.value;
            }

            if(temp_x!=0&&temp_y!=0)
                {
                    printf("temp_x = %d,temp_y = %d\n",temp_x,temp_y);

                    if((temp_x>551)&&(temp_x<=1023)&&(temp_y>299)&&(temp_y<=599))

                    {
                            close(input_fd);
                            return 1;
                    }
                    if((temp_x>=0)&&(temp_x<=511)&&(temp_y>299)&&(temp_y<=599))

                    {
                            close(input_fd);
                            return 2;
                    }
                }



        }
    }

}

}

https://blog.csdn.net/MyArrow/article/details/10582667?utm_source=blogxgwz8

一个思路:read接口的驱动会掉函数贴出来? 你把内核实现的read最终调用的驱动函数里面加一下调试代码printk,然后在shell dmesg > log.txt, 查看下自己的日志信息,是不是驱动层有bug?

此问题重复,关闭一个