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触摸屏驱动解析相关推荐

  1. android4.0触摸屏(touchscreen)以及屏幕按键驱动解析

    本人用的触摸屏IC是FocalTech公司的ft5306,是一款i2c的电容屏多点触控芯片.对于它的整体驱动官方已经给了,我们就触摸屏和按键部分的代码做相关说明.说明其中应该注意的地方. 对于所有的i ...

  2. 单片机上运行linux程序代码,在Linux下烧录51单片机

    原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...

  3. Linux编译代码卡死,Linux下970Pro编译卡死的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人小白一个,想请教图吧技术佬一个Linux下多线程编译C++时系统卡死的问题. 先说下家里电脑大体配置:CPU是Ryzen 1600X,显卡是华硕战枭G ...

  4. linux vi代码高亮,linux Vi编辑器代码高亮设置及永久显示行号的方法

    在linux中用vi编辑和修改文件配置中没有彩色显示文件的内容,特别一些关键字不能彩色显示,给我们配置服务过程中造成极大的不方便.[其实主要是vi本身不带颜色的,vim带颜色]下面给出一种解决的方法. ...

  5. linux python代码编辑器,Linux上的Python编辑器

    Hi! I wonder which editor or IDE you can recommend me for writing Python programs. I tried with jEdi ...

  6. sht30 linux示例代码,SHT30 Linux标准 i2c-dev 读取程序

    #include #include #include #include #include #include #include #include #include #include #include # ...

  7. 安卓linux输入代码在哪里,输入  |  Android 开源项目  |  Android Open Source Project

    Android 输入子系统名义上由遍历系统多个层的事件管道组成. 输入管道 在最低层,物理输入设备会生成描述状态更改(例如按键按压和轻触接触点)的信号.设备固件以某种方式编码和传输这些信号,例如向系统 ...

  8. 触摸屏linux系统时间,关于Linux触摸屏驱动

    操作系统对于经常应用电脑的用户非常的重要,一个好的操作系统,能更好的节省学习的时间.本文讲解Linux触摸屏驱动开发,在Linux触摸屏驱动中,最好的范例莫过于mc68328digi.c的实现.本文把 ...

  9. linux选择usb功能,USB gadget设备驱动解析(1)——功能体验

    利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1.一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC:设别,从而非常方便的完成 ...

最新文章

  1. webpack相关配置
  2. 阿里数据中台系列之Apsara Stack控制台用户角色权限及操作界面(一)
  3. asp.net MVC中的tip
  4. 小程序 graphql_GraphQL应用程序中的五个常见问题(以及如何解决)
  5. mysqli mysql的区别_phpmysqli和mysql区别详解
  6. vuejs项目开发环境搭建(ESlint安装)
  7. async spring 默认线程池_SpringBoot中Async异步方法和定时任务介绍
  8. 7.7-11 重定位过程描述+可执行目标文件的加载+共享库动态链接
  9. wordpress php 模板修改,教你如何修改wordpress模版技巧分享
  10. ubunt Linux nginx,linux ubuntu系统安装nginx教程
  11. Sql server中 如何用sql语句创建视图
  12. flex builder 4.6 for Apple iOS应用程序打包(MAC)
  13. 社区角色(Kubernetes社区Maintainer是什么角色?)
  14. 学习python记录2
  15. 服务器cadence比虚拟机慢,Cadence版本选择浅见
  16. 用数据告诉你,哪位导演是漫威影片中的票房收割机?
  17. SpriteKit从零开始~Physics and Collisions
  18. 项目经理的经营和运营意识—— 来自项目管理群的讨论
  19. Windows7 半角全角快捷键 修改方法
  20. Homekit智能家居DIY之智能灯泡

热门文章

  1. linux中断响应时间太慢_Linux中的进程调度有哪些核心概念?
  2. 数据结构与算法之-----队列(Queue)
  3. java 支持 shards 的jar_Solr Cloud:跨节点分配Shards
  4. mysql+order+in索引吗_mysql – 为什么ORDER BY不使用索引?
  5. 深度学习入门——波士顿房价预测
  6. Win10彻底关闭恢复功能、省流量终极设置
  7. 为何只能在其关联的线程内启动timer?
  8. 125万像素智能相机收费站解决方案
  9. pc计算机怎么设置域名管理,如何设置域名的DNS服务器 -电脑资料
  10. svn增量打包部署_实现Jenkins+svn+bat批处理构建svn版本差异增量的自动化打zip包