红外触摸框触摸时间度量

1、         查看红外触摸框设备

  红外框触摸使用了input子系统为上层应用提供了统一的接口,我们使用getevent命令查看所有的input设备,红色图标指向的/dev/input/event4就是红外触摸框设备文件,设备文件描述名为MTOUC  Touch Computer INC。

2、         查看红外设备触摸信息

查看红外触摸信息之前得先了解下input_event结构体:

1 struct input_event {
2     struct timeval time;
3     __u16 type;
4     __u16 code;
5     __s32 value;
6 };

time表示事件发生那一刻的时间。

type表示事件类型

code 根据type不同而表示意思不同,当type为触摸事件时EV_ABS

value 根据type以及code的不同而不同,当type为EV_KEY按键事件时,code为按键键值,value为按下还是抬起。

使用命令 getevent  /dev/input/event4,然后触摸以下触摸屏,在终端中打印信息如下图所示:

第一列:触摸类型input_event.type,在linux/include/uapi/linux/input.h里面有:

表示触摸类型,03代表绝对坐标类型  01代表按键事件。

 1 /*
 2  * Event types
 3  */
 4
 5 #define EV_SYN            0x00
 6 #define EV_KEY            0x01
 7 #define EV_REL            0x02
 8 #define EV_ABS            0x03
 9 #define EV_MSC            0x04
10 #define EV_SW            0x05
11 #define EV_LED            0x11
12 #define EV_SND            0x12
13 #define EV_REP            0x14
14 #define EV_FF            0x15
15 #define EV_PWR            0x16
16 #define EV_FF_STATUS        0x17
17 #define EV_MAX            0x1f
18 #define EV_CNT            (EV_MAX+1)

第二列:input_event.code的值,在这红外触摸类型下表示X或者Y的绝对坐标。

第三列:在红外触摸下表示X或者Y坐标的值。

3、         查看点击触摸屏以下:getevent -l  /dev/input/event4

  和没加 “-l”选项没什么差别,只是这里用宏替代了数字,更清晰每一个事件是什么意思。

  触摸按以下所触发的事件类型实践类型的按键值,现在我们仔细分析下。

  根据事件type分析,此次触摸事件触发了EV_ABS、EV_KEY、EV_SYN等三类事件,这三类分别是绝对坐标、按键、同步等。红外触摸支持该三类事件。该事件类型实在驱动编写时指定的。

  我们现在需要计算触摸事件所持续的时间长短,所以此时重点关注的是触摸的EV_KEY事件,该事件表示触摸按下或抬起。捕获按下的时间点,再捕获抬起的时间 点,将时间相减就得到了触摸移动的时间长短。好在input_event提供的time给结构体,没有time结构体也可一计算,此处不做过多演示。具体 代码如下。

 1 /*************************************************************************
 2     > File Name: testInput.c
 3     > Author: winfu
 4     > Mail: wenfuandyou@163.com
 5     > Created Time: Mon 30 May 2016 04:40:40 PM CST
 6  ************************************************************************/
 7
 8 #include<stdio.h>
 9 #include <time.h>
10 #include <stdlib.h>
11 #include <unistd.h>
12 #include <sys/types.h>
13 #include <sys/stat.h>
14 #include <fcntl.h>
15 #include <linux/input.h> //input_event,标准键值等
16 #include <stdbool.h>
17
18 #define DOWN 1
19 #define UP 0
20
21 int main(int argc, char *argv[])
22 {
23     int fd;
24     long int num = 0;
25     bool flagTime = false;
26     struct timeval tv_start,tv_end; // 记录实际触摸按下和抬起的时间
27
28     struct input_event inputV;
29     fd = open(argv[1], O_RDWR); //./testInput /dev/input/event4
30     if (fd < 0) {
31         printf("open event failed.\n");
32         return -1;
33     }
34
35     while(1) {
36
37         read(fd, &inputV, sizeof(inputV));
38
39
40    //     printf("\033[31m  type = %#x, code = %#x, value = %#x \033[0m \n",
41    //                        inputV.type, inputV.code, inputV.value);
42
43         //if (EV_ABS == inputV.type)  //读取按键内容
44         //{
45         //    printf("\033[1;32;40m  event=%s,value=%d \033[0m \r\n",
46         //                                 inputV.code == ABS_X ? "ABS_X":
47         //                                 inputV.code == ABS_Y ? "ABS_Y":
48         //                                 inputV.code == ABS_PRESSURE ? "ABS_PRESSURE" : "ABS_DISTANCE",inputV.value);
49         //}
50
51         if(inputV.type == EV_KEY && inputV.code == BTN_TOUCH && inputV.value == DOWN) //按下
52         {
53             flagTime = true;
54             tv_start =  inputV.time;
55         }
56         if(flagTime && inputV.type == EV_KEY && inputV.code == BTN_TOUCH && inputV.value == UP) //抬起
57         {
58             tv_end =  inputV.time;
59
60             printf("-------------------------> \e[0;31m %d times ,run time : %lf ms \033[0m <-------------------\n",num++
61                  ,    (tv_end.tv_sec - tv_start.tv_sec)*1000.0 /*将秒转换为毫秒*/
62                  +  (tv_end.tv_usec - tv_start.tv_usec)/1000.0 );/*将微妙转换为毫秒*/
63             flagTime = false;
64         }
65         num=num%50000;
66     }
67     close(fd);
68     return 0;
69 }

测试运行结果如下:在屏幕上写一个“大”字

写“大”字用了3笔,每一笔都有显示时间。

转载于:https://www.cnblogs.com/winfu/p/5552524.html

红外触摸框触摸时间度量相关推荐

  1. ilitek win10 触摸屏驱动_想做多大红外触摸框找融创方圆定制触摸屏工厂

    融创方圆定制大尺寸拼接屏多点触摸屏,大屏拼接屏红外多点触摸框,触摸拼接屏,拼接触摸屏,触摸拼接墙,拼接墙触摸屏,我们大尺寸多点触摸框反应灵敏,无盲区,无鬼点,无漂移,免驱动,即插即用且具有卓越的抗环境 ...

  2. android怎么监听多点触摸_大尺寸触摸屏厂家定制多点触摸框

    深圳融创方圆是订做红外大尺寸触摸屏生产厂家,弧形/直角/异形/U型大尺寸红外多点触摸框定做15寸-1000寸超大尺寸红外触控屏可以用于配合液晶拼接屏,DLP拼接屏,无缝拼接屏,小间距LED.互动投影. ...

  3. ilitek win10 触摸屏驱动_想做多大尺寸触摸框找融创方圆定制触摸屏工厂

    融创方圆定制大尺寸拼接屏多点触摸屏,大屏拼接屏红外多点触摸框,触摸拼接屏,拼接触摸屏,触摸拼接墙,拼接墙触摸屏,我们大尺寸多点触摸框反应灵敏,无盲区,无鬼点,无漂移,免驱动,即插即用且具有卓越的抗环境 ...

  4. M平台 按键板/触摸框 虚拟uinput 设备

    基于Android平台的TV 产品,输入设备中除了上篇提到的遥控器,空鼠.还有一些模拟 出来的uinput 设备"Mstar Smart TV Keypad" ,"lib ...

  5. Arduino ESP32深度睡眠触摸唤醒(触摸唤醒)

    Arduino ESP32深度睡眠触摸唤醒(触摸唤醒) 通过D4–GPIO4引脚触摸感应,触发唤醒功能. 睡眠模式下,触摸中断响应流程图 实例代码 /*深度睡眠触摸唤醒(触摸T0唤醒) */#defi ...

  6. (71)Verilog HDL时间度量系统函数:$time

    (71)Verilog HDL时间度量系统函数:$time 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL时间度量系统函数:$time 5)结语 ...

  7. android触屏对焦_Android相机开发(五): 触摸对焦,触摸测光,二指手势缩放

    Android Camera Develop: touch to focus, touch to metering, double finger touch to zoom 概述 本篇在(四)的基础上 ...

  8. Android相机开发: 触摸对焦,触摸测光,二指手势缩放

    转自此处 概述 本篇在(四)的基础上继续对相机APP的功能进行增强.触摸对焦,就是在屏幕上点击某个点,相机就以此点内容进行对焦,保证此点最清晰:触摸测光,就是在屏幕上点击某个点,相机调整曝光亮度,保证 ...

  9. Unity判断手势的滑动方向,单点触摸和多点触摸,并获取刚触摸以及触摸结束事的坐标

    Unity判断手势触摸的类型 ,判断手势的滑动方向,并获取刚触摸以及触摸结束事的坐标 本章咱们一起来看下unity对有触摸手势做出的响应 单点触摸 Input.touchCount==1 移动触摸 I ...

最新文章

  1. 线段树 ---- 牛客多校4 ETree Xor 区间异或分段
  2. hasnMap的基本操作 源码(三)
  3. php运行出来一堆乱码,一堆乱码中找到的~_php
  4. 计算机无法屏幕亮度,电脑屏幕亮度无法调节怎么办
  5. 用Android Studio调试Framework层代码
  6. Python 已经饱和?我猜你一定不懂这个技能!
  7. Databricks:2015 Spark调查报告(部分译文)
  8. scrapy 模拟登陆
  9. mysql heartbeat 慢_Mysql 慢日志优化分析方法
  10. r软件说明lib文件未指明_软件说明文件
  11. CSP - J 2020 T1 优秀的拆分
  12. Oracle_PL/SQL developer拷贝粘贴中文乱码问题
  13. 买断式软件逐渐向订阅式软件发展,是不是资本想一直割韭菜?
  14. DDA算法、中点Bresenam算法,圆或椭圆的绘制
  15. OpenGL游戏程序设计——————关于这本书
  16. 永洪BI还能这样玩?3招让用户权限管理不再繁琐
  17. 视频编码中CBR编码和VBR编码
  18. VBA字典数组转置维度变化
  19. 分享写SQL的21个好习惯!
  20. mysql初始化数据库

热门文章

  1. 腾讯某安全工程师因好奇入侵酒店WiFi系统,遭安全局逮捕并处罚金
  2. CSS设定图片变灰色
  3. 物联网技术西电捷通TRAIS符合性检测系统的应用研究
  4. 前端react,vue导出word的几种方法(可以导出图片)
  5. 使用scp命令, 报 not a regular file的解决办法
  6. arcgis生成剖面图(利用堆栈剖面)
  7. 用友添加nc显示服务器不可用,NC启动服务的时候出现这个问题,急求解决
  8. IBC2018阵容一流的主旨演讲嘉宾名单公布,同时宣布推出Global Gamechangers舞台
  9. html页面字符串转map,js将字符串转成map
  10. 解决brew update 连接git失败问题