当前位置: 首页 > news >正文

沈阳网站建站推广湖南网站建设效果

沈阳网站建站推广,湖南网站建设效果,网络推广专员好做吗,做网站怎么导入源码触摸屏的原理与应用 基本概念 项目实现过程中为了提高用户体验,一般都需要实现人机交互,常见的人机交互的方式有触摸按键、触摸屏、语音识别等方案,其中最常用的就是触摸屏。 在Linux系统下连接操作系统的输入设备不止一种,可能…
  1. 触摸屏的原理与应用
  • 基本概念

项目实现过程中为了提高用户体验,一般都需要实现人机交互,常见的人机交互的方式有触摸按键、触摸屏、语音识别等方案,其中最常用的就是触摸屏。

在Linux系统下连接操作系统的输入设备不止一种,可能是一个键盘、一个 USB 鼠标或者是一块触摸屏,甚至是一个游戏机摇杆,Linux在处理这些复杂多样的输入设备时,采用的办法就是用中间层来屏蔽各种细节,所以就设计出输入子系统(输入设备的集合)来管理这些输入设备。

驱动原理

在Linux内核中,对输入设备的使用,实际上运用了3大块来管理,它们分别是所谓的输入设备驱动层、输入子系统核心层,以及事件触发层。

设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层提交给事件处理层。

核心层对下提供了设备驱动层的编程接口,对上又提供了事件处理层的编程接口。

事件处理层就为我们用户空间的应用程序提供了统一访问设备的接口和驱动层提交来的事件处理。所以这使得我们输入设备的驱动部分不在用关心对设备文件的操作,而是要关心对各硬件寄存器的操作和提交的输入事件。

举例:当手指在屏幕上滑动的时候,驱动层中的触摸屏驱动会源源不断地产生触摸屏相关数据,并向上递送给内核输入子系统,输入子系统进一步将这些信息规整为统一的结构体,并借助事件触发层发往对应的设备节点文件,至此,应用程序即可从这些设备节点文件读取相关信息。

注意:底层驱动产生的设备数据与上层应用读取设备数据是两个完全异步的过程,彼此之间是没有耦合和约束的,例如:当底层驱动产生的触摸屏坐标信息比应用层读取的速度要快时,应用程序将会丢失一部分坐标信息。

  • 工作原理

  • 使用流程

在最靠近应用程序的事件触发层上内核所获知的各类输入事件,比如键盘被按了一下、触摸屏被滑了一下等,都将被统一封装在一个叫做input_event的输入信息结构体当中,该结构体在名字叫做input.h的头文件中定义,头文件路径为/usr/include/linux/input.h。

  1. type

事件类型(type)

说明

EV_SYN

事件间的分割标志,有些事件可能会在时间和空间上产生延续,比如持续按住一个按键,为了更好地管理这些持续的事件,EV_SYN用以将他们分割成一个个的小的数据包。

EV_KEY

用以描述键盘,按键或者类似键盘的设备的状态变化。

EV_REL

相对位移,比如鼠标的移动,滚轮的转动等。

EV_ABS

绝对位移,比如触摸屏上的坐标值。

EV_MSC

不能匹配现有的类型,这相当于当前暂不识别的事件

比如在Linux系统中按下键盘中针对Windows系统的“一键杀毒”按键,将会产生该事件。

EV_LED

用于控制设备上的LED灯的开关,比如按下键盘的大写锁定键

会同时产生 ”EV_KEY” 和 ”EV_LED” 两个事件。

… …

… …

  1. code

用于对事件的类型作进一步的描述。比如:当发生EV_KEY事件时,则可能是键盘被按下了,那么究竟是哪个按键被按下了呢?此时查看code就知道了。当发生EV_REL事件时,也许是鼠标动了,也许是滚轮动了。这时可以用code的值来加以区分。

事件类型(type)

事件代码(code)

说明

EV_KEY

BTN_TOUCH

触摸屏发生了按压、松开事件

EV_KEY

KEY_LEFT

键盘的左箭头发生了按压、松开事件

EV_KEY

KEY_RIGHT

键盘的右箭头发生了按压、松开事件

EV_ABS

ABS_X

触摸屏发生了x轴坐标事件

EV_ABS

ABS_Y

触摸屏发生了y轴坐标事件

EV_REL

ABS_Y

触摸屏发生了y轴坐标事件

EV_ABS

ABS_Y

触摸屏发生了y轴坐标事件

… …

… …

… …

  1. value

当code都不足以区分事件的性质的时候,可以用value来确认。比如由EV_REL和REL_WHEEL确认发生了鼠标滚轮的动作,但是究竟是向上滚还是向下滚呢?再比如由由EV_KEY和KEY_F确认了发生键盘上F键的动作,但究竟是按下呢还是弹起呢?这时都可以用value值来进一步判断。

事件类型(type)

事件代码(code)

发生值(value)

说明

EV_KEY

BTN_TOUCH

大于0

手指按压了触摸屏

EV_KEY

BTN_TOUCH

0

手指松开了触摸屏

EV_KEY

KEY_LEFT

大于0

左箭头被按下

EV_KEY

KEY_LEFT

0

左箭头被松开

EV_ABS

ABS_X

213

触摸屏产生了一个233的 x 轴坐标

EV_ABS

ABS_Y

448

触摸屏产生了一个448的 y 轴坐标

… …

… …

… …

… …

用户访问触摸屏的流程:打开触摸屏、读取反馈的数据、分析反馈的数据、输出处理的结果。

 对于触摸屏而言,属于字符设备,所以在开发板的Linux系统已经默认把触摸屏的驱动程序安装在Linux内核中,当触摸屏的驱动安装完成后,系统内核会自动在开发板的Linux系统的 /dev目录生成对应的设备文件,对于触摸屏而言输入输入设备,所以触摸屏的设备文件的路径:/dev/input/event0

  • 坐标转换

蓝色边框的触摸屏,坐标范围是(800,480 ),所以和LCD屏的分辨率一致,所以不需要转换

黑色边框的触摸屏,坐标范围是(1024,600),所以和LCD屏的分辨率不同,所以需要转换!!

可以采用条件编译的方式来选择不同的转换算法,常用的方案是采用 #if/#else/#endif !!

作业:要求整合之前已经实现的倒车影像+倒车辅助功能,在之前的功能上实现屏幕换挡功能。

提示:可以参考特斯拉的屏幕换挡功能,要求界面要符合用户体验,向下滑动的时候可以切换到倒车挡,切换倒车挡之后,显示倒车影像+倒车辅助线。

http://www.dtcms.com/a/470002.html

相关文章:

  • 会员体系搭建攻略讲解:从分层运营到提升用户忠诚度
  • Merkle Tree(默克尔树)原理分析
  • Vue3 学习笔记 8:其它 API
  • 库早报|15999元!先临三维发布口袋式3D扫描仪;激光制造与增材制造大会延期;拓竹双项入选《时代》年度发明榜
  • 流量网站建设教程电子商务网站建设php
  • React中Element、Fiber、createElement和Component关系
  • 大语言模型(LLM)是“预制菜”? 从应用到底层原理,在到中央厨房的深度解析
  • 做的好的商城网站南昌网站搭建公司 赣ICP
  • 软件测试资源笔记(4万字,持续更新中)
  • 做外贸网站做成哪种形式好WordPress购物个人中心
  • LeetCode 395 - 至少有 K 个重复字符的最长子串
  • 科技有限公司可以做网站建设吗成都网站网络建设
  • Qt绘制折线图
  • Idea中新建package包,变成了Directory
  • 如何自建淘宝客网站wordpress 知笔墨
  • Python爬虫实战:腾讯控股2024年资产负债分析
  • AI-调查研究-100-具身智能 现代AI方法全解析:强化学习、模仿学习与Transformer在机器人控制中的应用
  • Docker核心技术:深入理解网络模式 ——Host/None/Container 模式与混合云原生架构实践
  • 南通市住房城乡建设局网站磁力蜘蛛种子搜索
  • 解决HTML塌陷的方法
  • sqlite 使用: 03-问题记录:在使用 sqlite3_bind_text 中设置 SQLITE_STATIC 参数时,处理不当造成的字符乱码
  • 网站建设与维护难不难为什么找别人做网站
  • 广州木马网站建设公司医院门户网站建设规划
  • 大模型学习之 深入理解编码器与解码器
  • pyqt 触摸屏监听
  • C++ Primer Plus 第六版 第十三章 编程题
  • 大模型前世今生(十二):Hessian矩阵
  • 蛙跳积分法:分子动力学模拟中的高效数值积分技术
  • 详解 SNMPv1 与 SNMPv2 Trap 格式
  • 书法网站建设成都微信公众号制作