qq_35742333
害羞的蛆
采纳率80%
2018-11-15 07:38

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

5
  • linux
已采纳

问题描述:
屏幕是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;
                    }
                }



        }
    }

}

}

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

3条回答

  • devmiao devmiao 3年前
  • qq_35742333 害羞的蛆 3年前

    此问题重复,关闭一个

    点赞 评论 复制链接分享
  • adokaixin 6——6 3年前

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

    点赞 评论 复制链接分享

相关推荐