欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

在嵌入式Linux下基于Qt的触摸屏驱动的研究(图文)

时间:2011-04-23  作者:秩名

论文导读:触摸屏因方便灵活、节省空间、直观等特点,作为嵌入式系统的输入设备,已取代键盘,越来越受各种终端产品生产商的重视。嵌入式Linux操作系统因开放源代码、便于裁减,是当前嵌入式操作系统的主要选择。然而这种分类方式并不是非常严格,程序员可以构造一个大的模块,在其中实现不同类型的设备驱动程序。在本系统中触摸屏所完成的功能是感测触点坐标,将坐标值A/D转换后传给CPU。
关键词:嵌入式系统,Linux,Qt/Embedded,触摸屏,设备驱动
 

引言

传统的人机交流是通过键盘或鼠标来实现的。信息交换的速度比较慢,而且要求操作者具有一定的专业知识。这将使信息交流的目的大打折扣。触摸屏因方便灵活、节省空间、直观等特点,作为嵌入式系统的输入设备,已取代键盘,越来越受各种终端产品生产商的重视。嵌入式Linux操作系统因开放源代码、便于裁减,是当前嵌入式操作系统的主要选择。

1 Linux下的设备驱动简介[1]

Linux系统主要将设备分成三种类型:字符设备、块设备和网络接口。每个模块通常实现其中一种类型,相应的模块分为字符模块(char module)、块模块(block module)和网络模块(networkmodule)三种。然而这种分类方式并不是非常严格,程序员可以构造一个大的模块,在其中实现不同类型的设备驱动程序。为了实现良好的伸缩性和扩展性,通常还是为每个功能创建一个不同的模块。

字符设备(char device)是能够像字节流一样被访问的设备,由字符设备驱动程序来实现这种特性。它通常至少需要实现open、close、read和write系统调用。字符设备可以通文件系统节点来访问,比如字符终端(/dev/console)和串口(/dev/ttyS0)就是字符设备的例子。

块设备(block device)也是通过/dev目录下的文件系统节点被访问的。块设备能够容纳文件系统。Linux允许应用程序像字符设备那样读写块设备,可以一次传递任意多字节的数据。因此,块设备与字符设备的区别仅仅在于内核内部管理数据的方式。也就是内核和驱动程序的接口不同。另外,块设备的接口必须支持挂装(mount)文件系统。

网络接口(network interface)是一个能够和其他主机交换数据的设备。它由内核中的网络子系统驱动,负责发送和接收数据包,它无须了解每项事务是如何映射到实际传输的数据包的。可Linux中还存在其他类型的驱动程序模块,这些模块利用内核提供的公共服务来处理特定类型的设备。因此我们能够和通用串行总线(USB)模块、串口模块等通信。

Linux设备驱动都在内核中实现,实现方式有两种,一种将相关设备驱动程序直接编译到内核中;另一种是将具体的设备驱动程序独立编译,成为可安装的模块,需要时由应用程序通过系统调用动态地进行安装和卸载。

Qt/Embedded下触摸屏驱动的研究

2.1 Qt/Embedded简介[2]

Qt/Embedded是著名的Trollech公司发布的专门面向嵌入式系统的GUI和应用开发的开发库。免费论文参考网。它是一种全面的C++图形界面应用开发架构。它继承了Qt的全部标准API,提供了比Xlib和XWindows系统更加紧凑的窗口生成系统,对FrameBuffer直接进行操作。完全模块化的设计和高效的编译系统减少了内存的消耗,这些使Qt/Embedded成为嵌入式环境中,功能强大而全面的GUI开发工具。由于Qt/Embedded的强大功能,它被嵌入式系统开发者广泛应用于各种领域,从消费电子(移动电话、掌上电脑、机到工业控制(医疗成像设备、移动信息系统)。

2.2 Qt/Embedded下鼠标类设备驱动的研究

在Linux操作系统中,所有的设备都被当作文件来对待,这些文件称为设备文件。由于Qt/Embed -ded 中与用户输入事件相关的信号,是建立在对底层输入设备的接口调用之上的,所以一般通过对设备文件的I/O读写来实现。Qt库封装一些常用设备的访问操作,并形成了相应的设备驱动接口,如显示卡驱动、鼠标、键盘、串口和并口等。其中鼠标设备的抽象基类为QWS-Mouse Handler,从该类又重新派生出一些具体的鼠标类设备的实现类。在3.3.4版本系列的Qt/Embedded中,鼠标类设备的派生结构如图1所示[3]。

 

       
   
 
 

 

图1 鼠标类设备的派生结构图图2 软件流程图

(虚线框表示可省略类结构)

鼠标类设备的加载方式与KeyBoard设备加载方式是类似的,在系统构造QWSServer对象时,调用成员函数QWSServer::openMouse函数中调用QmouseDriverFactory::create()或QmouseDriver- Plugin::create()。该函数根据Linux系统的环境变量QWSMOUSE_ PROTO获得鼠标类设备的设备类型和设备节点。打开并返回相应设备的基类指针QWSMouseHandler给系统,系统通过操作该基类派生出的具体子类设备指针QWSCustomMouseHandler,获得对具体鼠标类设备的调用操作(如图2所示)

2.3 Qt/Embedded下触摸屏驱动的研究

在本系统中触摸屏所完成的功能是感测触点坐标,将坐标值A/D转换后传给CPU。驱动程序需要控制设备采集数据并把数据送往上层的应用程序,以后的处理由应用程序来完成 设备驱动程序要为设备提供通用的系统调用,如open、read、write、close等。图3是设备驱动程序和其他部分的关系结构。

 

 
 

 

图3 设备驱动程序及其相关结构

由于Qt库中没有特别针对触摸屏的设备接口,而且触摸屏和鼠标类设备在功能上基本是一致的,因此,我们可以把触摸屏模拟成鼠标设备来实现对触摸屏设备的操作。但由于触摸屏和鼠标底层接口并不一样,会造成对上层接口的不一致。举例来讲,从鼠标驱动接口中几乎不会得到绝对位置信息,一般只会读到相对移动量。另外,鼠标的移动加速度也需要考虑在内,而触摸屏接口则几乎是清一色的绝对位置信息和压力信息。针对此类差别,Qt/Embedded将同一类设备的接口部分也给予区别和抽象,具体实现在QmouseDriverlnterface类中。

在本系统中,Linux系统从COM1口读人触摸屏的坐标数据,但是由于与触摸屏的底层接口并不一致,需通过添加QWSCustomMouseHandler程序接口类来实现对触摸屏的控制。查看Qt/Embedded源代码qwsmouselinuxtp_qws.cpp和qwsmousevr41XX_qws.cpp,可知Qt提供了linuxtp和vr41XX触摸屏的驱动接口类。如果使用的恰好是这两种触摸屏接口,那么直接在执行Qt的configure配置时加入配置选项-qt-mouse-<driver)即可 。免费论文参考网。由于我们的触摸屏并非以上两种, 因此我们需自己添加驱动接口。

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:在OracleJDeveloper中通过XMI开发UML图表
下一篇论文:整流滤波电路的计算机仿真
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文