赞
踩
我们监听显示屏点击的位置变化,说白了也就是监听屏幕触摸功能所对应的设备文件。
所有毋庸置疑,首先得知道对应的设备文件在哪?然后打开它,读取去其中的信息就可以获得其中的位置信息,而系统Linux系统也提供了相应的API,以及对应的结构体。
- int num ;
- int lcd = open("/dev/fb0", O_RDWR);
- if (lcd == -1)
- {
- perror("打开LCD失败");
- }
- int LCD_touch = open("/dev/input/event0", O_RDWR);
- if (LCD_touch == -1)
- {
- perror("打开LCD触摸感应失败");
- }
-
- struct input_event touch;
- int touch_x = -1, touch_y = -1, touch_y1 = -1, touch_x1 = -1;
-
-
- num = 0;
- while (1)
- {
-
- while (1)
- {
-
- read(LCD_touch, &touch, sizeof(touch));
- if (touch.type == EV_ABS && touch.code == ABS_X)
- touch_x1 = touch.value * 800 / 1024;
- if (touch.type == EV_ABS && touch.code == ABS_Y)
- touch_y1 = touch.value * 480 / 600;
-
- if ((touch_x1 != -1 && touch_y1 != -1) || (touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0))
- {
- touch_x = touch_x1;
- touch_y = touch_y1;
- touch_x1 = -1;
- touch_y1 = -1;
- break;
- }
- }
这个结构体就是用来读取这个设备文件专用的,用它就能读取相应的信息。
因为这个结构体的信息是分类的及,它有多个type值,type不一样对应的code值也不一样,
而且code也是一种用来分类的标识。最后的value值才是经过两分类后的信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。