Linux触摸屏驱动测试程序范例【转】

转自:http://blog.sina.com.cn/s/blog_4b4b54da0102viyl.html

转载2015-05-09 16:28:27

标签:androiditlinux

触摸屏驱动测试

由于mini2440的触摸屏驱动是基于input子系统的,而input子系统给用户层提供的是input_event结构体,我们主要是在应用层接收这个结构体,然后对其类型进行分类,取出我们需要的数值。

struct input_event { struct timeval time;

       unsigned short type;  //支持的类型,如EV_ABS

       unsigned short code;   //支持的具体事件,如坐标事件的ABS_X

       unsigned int value;  //值

};

测试触摸屏驱动的应用层代码如下

#include

#include

#include

#include

#include

int main(int argc, char *argv[])

{

       int fd = -1;

       int num;

       size_t rb;

       int version;

       char name[20];

       struct input_event ev;

       int i=0;

       if ((fd = open("/dev/input/event0", O_RDONLY)) < 0)  //打开设备

       {

              perror("open error");

              exit(1);

       }

       while(1)

       {

              rb = read(fd, &ev, sizeof(struct input_event));  //读取设备

              if (rb < (int)sizeof(struct input_event))  //读取错误

              {

                     perror("read error");

                     exit(1);

              }

              if (EV_ABS==ev.type)                     //读取按键内容

              {

              printf("event=%s,value=%d\n",ev.code==ABS_X?"ABS_X":ev.code==ABS_Y?"ABS_Y":ev.code==ABS_PRESSURE?"ABS_PRESSURE":"UNKNOWEN",ev.value);     

              }else{

              printf("not ev_abs\n");        

              }

       }    

        close(fd);

       return 0;

}

 

编译测试程序test.c

arm-linux-gcc test.c –o test

超级终端:

./test

测试结果:(触笔按下触摸屏)

event=ABS_X, value=505

event=ABS_Y, value=334

event=ABS_PRESSURE, value=1

时间: 2024-11-08 23:11:01

Linux触摸屏驱动测试程序范例【转】的相关文章

Linux Framebuffer驱动剖析之二—驱动框架、接口实现和使用

本文继上一篇文章<Linux Framebuffer驱动剖析之一-软件需求>,深入分析LinuxFramebuffer子系统的驱动框架.接口实现和使用. 一.LinuxFramebuffer的软件需求 上一篇文章详细阐述了LinuxFramebuffer的软件需求(请先理解第一篇文章再来阅读本篇文章),总结如下: 1. 针对SOC的LCD控制寄存器进行编程,以支持不同的LCD屏,以使该SOC的应用场景最大化.这是硬件平台相关的需求.其对应Linux源码路径arch\arm\mach-s5pv2

AM335x(TQ335x)学习笔记——触摸屏驱动编写

前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱动源码,单纯的配置DTS是无法完成TQ335x的触摸驱动移植工作的,因此,本文参考内核中原有的pixcir_i2c_ts驱动编写TQ335x的触摸屏(TN92)驱动. 在之前移植TQ210时,我已经编写过TQ210的触摸屏驱动,我的TQ335x还是使用的TQ210的屏,因此,难度不是很大.这里需要说

《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动

1.4 Linux设备驱动 Linux 设备驱动开发详解(第2版)1.4.1 设备的分类及特点 计算机系统的硬件主要由CPU.存储器和外设组成.随着IC制作工艺的发展,目前,芯片的集成度越来越高,往往在CPU内部就集成了存储器和外设适配器.譬如,相当多的ARM.PowerPC.MIPS等处理器都集成了UART.I2C控制器.USB控制器.SDRAM控制器等,有的处理器还集成了片内RAM和Flash. 驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对CPU核.Linux

手把手教你写Linux设备驱动---input子系统(四)--电容屏驱动ft5x06编写(一)(基于友善之臂4412开发板)

这一节,我们将从零开始写tiny4412的触摸屏驱动ft5x06,写这节博客之前,先了解下需要什么知识: 1.i2c驱动相关的知识 2.输入子系统 3.中断 4.工作队列 关于i2c驱动相关的知识,在后期的博文里会专门写几篇博文来进行总结,这里就不再说i2c相关的知识,我们先知道怎么用就行了. 首先,我在ts.h构造了一个ts_info_st结构体,用来存放触摸屏的中断线,x坐标,y坐标,压力值. 用ts_st构造了该触摸屏的设备结构体. 我们还是直接看点实际的东西,上代码: ts.h #ifn

《Android深度探索(卷1):HAL与驱动开发》——1.6节 Linux设备驱动

1.6 Linux设备驱动Android深度探索(卷1):HAL与驱动开发随着计算机技术的不断发展,与计算机(也包括手机等计算设备)相关的硬件设备的种类也不断丰富起来.这就需要大量的Linux设备驱动来与这些硬件设备进行交互.为了使读者在学习如何编写Linux驱动之前对Linux驱动有一个初步的认识,本节介绍了设备驱动在整个操作系统中的作用以及设备驱动的分类. 1.6.1 设备驱动的发展和作用任何一台计算机系统的运行都是由软硬件共同作用的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则是一堆废

QT 触摸屏 驱动

要:本文主要介绍了在嵌入式 Linux 系统下基于 Qt/Embeded 的触摸屏驱动的设计,通过对 Linux 设备 驱动和Qt/Embedded设备驱动接口的工作原理和机制介绍,并结合大量源代码进行分析,提出了基于Qt/Embeded 的触摸屏驱动的开发方案.Linux 下的设备驱动基础   Linux 系统主要将设备分成 3 种类型:字符设备. 块设备和网络接口.每个模块通常实现其中一种类型,相应的模块可分为字符模块.块模块和网络模块 3 种.然而这种分类方式并不是非常严格,程序员可以构造

Linux USB驱动框架分析【转】

转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了.好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动研发.但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货.当然,还会顺带提一下其他的驱动程式写法. 事实上,Linux的设备驱动都遵循一个

Linux主机驱动与外设驱动分离思想

1主机.外设驱动分离的意义 在Linux设备驱动框架的设计中,除了有分层设计实现以外,还有分隔的思想.举一个简单的例子,假设我们要通过SPI总线访问某外设,在这个访问过程中,要通过操作CPU XXX上的SPI控制器的寄存器来达到访问SPI外设YYY的目的,最简单的方法是: return_type xxx_write_spi_yyy(...) { xxx_write_spi_host_ctrl_reg(ctrl); xxx_ write_spi_host_data_reg(buf); while(

系统-LINUX网卡驱动修改(ath9k驱动),求救!!

问题描述 LINUX网卡驱动修改(ath9k驱动),求救!! 小弟现在做一个任务,需要跳过网卡驱动的协议栈,直接通过射频发送数据,不知如何修改? 网卡是AR9285,系统是LINUX,驱动为ATH9K. 不知各位高人有何指教? 解决方案 我最近也在做这块,请问解决了吗