linux触摸屏代码解析,Linux触摸屏驱动解析
Linux下开发触摸屏驱动,最好的范例莫过于mc68328digi.c的实现。在没有看到原文之前,我把其中用到的结构解析一下。
1,struct ts_pen_info
该结构是触摸屏的核心数据结构。用户程序和驱动程序的交互就是通过该数据结构完成的。结构体里面的x,y坐标和状态是gui中事件驱动的原始数据源。
2,环形队列
gui程序通过read完成对ts_pen_info的提取。而在内核中维护了一个环形队列,只要队列不为空,将立即返回数据给应用程序。
3,中断驱动机制
触摸屏是输入设备,因此使用的是中断驱动机制。只要有触摸事件发生,即向环形队列里面填充一项。
4,定时器的必要性
触摸屏的中断处理函数必然启动一个定时器。定时器的使用是为了检测出Drag操作。当按下触摸屏一直没有松开时,中断只会相应一次。这和触发方式关系不大,不是沿触发和电平触发的问题。主要是触摸屏的中断处理函数没有处理到松开是不会开放中断的。在这段时间内,就是通过定时器不停的启动,检测触摸屏的新坐标的。
5,misc驱动
触摸屏采用Misc结构的驱动。
这5点是触摸屏驱动的核心,理解这些,阅读和编写自己的触摸屏驱动都会游刃有余。后面给出程序的源码,供有兴趣的朋友研究。
linux触摸屏代码解析,Linux触摸屏驱动解析相关推荐
- android4.0触摸屏(touchscreen)以及屏幕按键驱动解析
本人用的触摸屏IC是FocalTech公司的ft5306,是一款i2c的电容屏多点触控芯片.对于它的整体驱动官方已经给了,我们就触摸屏和按键部分的代码做相关说明.说明其中应该注意的地方. 对于所有的i ...
- 单片机上运行linux程序代码,在Linux下烧录51单片机
原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...
- Linux编译代码卡死,Linux下970Pro编译卡死的问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人小白一个,想请教图吧技术佬一个Linux下多线程编译C++时系统卡死的问题. 先说下家里电脑大体配置:CPU是Ryzen 1600X,显卡是华硕战枭G ...
- linux vi代码高亮,linux Vi编辑器代码高亮设置及永久显示行号的方法
在linux中用vi编辑和修改文件配置中没有彩色显示文件的内容,特别一些关键字不能彩色显示,给我们配置服务过程中造成极大的不方便.[其实主要是vi本身不带颜色的,vim带颜色]下面给出一种解决的方法. ...
- linux python代码编辑器,Linux上的Python编辑器
Hi! I wonder which editor or IDE you can recommend me for writing Python programs. I tried with jEdi ...
- sht30 linux示例代码,SHT30 Linux标准 i2c-dev 读取程序
#include #include #include #include #include #include #include #include #include #include #include # ...
- 安卓linux输入代码在哪里,输入 | Android 开源项目 | Android Open Source Project
Android 输入子系统名义上由遍历系统多个层的事件管道组成. 输入管道 在最低层,物理输入设备会生成描述状态更改(例如按键按压和轻触接触点)的信号.设备固件以某种方式编码和传输这些信号,例如向系统 ...
- 触摸屏linux系统时间,关于Linux触摸屏驱动
操作系统对于经常应用电脑的用户非常的重要,一个好的操作系统,能更好的节省学习的时间.本文讲解Linux触摸屏驱动开发,在Linux触摸屏驱动中,最好的范例莫过于mc68328digi.c的实现.本文把 ...
- linux选择usb功能,USB gadget设备驱动解析(1)——功能体验
利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1.一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC:设别,从而非常方便的完成 ...
最新文章
- webpack相关配置
- 阿里数据中台系列之Apsara Stack控制台用户角色权限及操作界面(一)
- asp.net MVC中的tip
- 小程序 graphql_GraphQL应用程序中的五个常见问题(以及如何解决)
- mysqli mysql的区别_phpmysqli和mysql区别详解
- vuejs项目开发环境搭建(ESlint安装)
- async spring 默认线程池_SpringBoot中Async异步方法和定时任务介绍
- 7.7-11 重定位过程描述+可执行目标文件的加载+共享库动态链接
- wordpress php 模板修改,教你如何修改wordpress模版技巧分享
- ubunt Linux nginx,linux ubuntu系统安装nginx教程
- Sql server中 如何用sql语句创建视图
- flex builder 4.6 for Apple iOS应用程序打包(MAC)
- 社区角色(Kubernetes社区Maintainer是什么角色?)
- 学习python记录2
- 服务器cadence比虚拟机慢,Cadence版本选择浅见
- 用数据告诉你,哪位导演是漫威影片中的票房收割机?
- SpriteKit从零开始~Physics and Collisions
- 项目经理的经营和运营意识—— 来自项目管理群的讨论
- Windows7 半角全角快捷键 修改方法
- Homekit智能家居DIY之智能灯泡
热门文章
- linux中断响应时间太慢_Linux中的进程调度有哪些核心概念?
- 数据结构与算法之-----队列(Queue)
- java 支持 shards 的jar_Solr Cloud:跨节点分配Shards
- mysql+order+in索引吗_mysql – 为什么ORDER BY不使用索引?
- 深度学习入门——波士顿房价预测
- Win10彻底关闭恢复功能、省流量终极设置
- 为何只能在其关联的线程内启动timer?
- 125万像素智能相机收费站解决方案
- pc计算机怎么设置域名管理,如何设置域名的DNS服务器 -电脑资料
- svn增量打包部署_实现Jenkins+svn+bat批处理构建svn版本差异增量的自动化打zip包