static irqreturn_t pm_interrupt(struct serio *serio,
  unsigned char data, unsigned int flags)
{
 struct pm *pm = serio_get_drvdata(serio);
 struct input_dev *dev = pm->dev;

pm->data[pm->idx] = data;

if (pm->data[0] & 0x80) {
  if (PM_MAX_LENGTH == ++pm->idx) {
   //input_report_abs(dev, ABS_X, pm->data[2] * 128 + pm->data[1]);
   //input_report_abs(dev, ABS_Y, pm->data[4] * 128 + pm->data[3]);
   input_report_abs(dev, ABS_Y, pm->data[1] * 128 + pm->data[2]);
   input_report_abs(dev, ABS_X, pm->data[3] * 128 + pm->data[4]);
   input_report_key(dev, BTN_TOUCH, !!(pm->data[0] & 0x40));
   input_sync(dev);
   pm->idx = 0;
  }
 }

return IRQ_HANDLED;
}

在驱动中如做上修改。

并在应用中加入如下文件:

/**************************************
Copyright: 2013, Tkai
File name: penmount_init.c
Description: 将串口属性由TTY改为M_MOUSE
Author: 陆晓来
Version: v1.0
Date: 2013.3.15
History: 无
**************************************/
#include "stdio.h"
#include "stdlib.h"
#include "sys/ioctl.h"
#include "sys/stat.h"
#include "unistd.h"
#include "fcntl.h"
#include "termios.h"
#include "errno.h"
#include "/opt/OMAP3530/linux-03.00.01.06/include/linux/tty.h"  //根据内核目录修改
#include "/opt/OMAP3530/linux-03.00.01.06/include/linux/serio.h"//根据内核目录修改
#define SERIO_ANY 0xff
#define device "/dev/ttyS0"    //根据实际使用串口资源修改

/*************************************************
Function: setLine()
Description: 设置串口参数
Calls: NULL
Called By: main()
Input: fd->串口文件操作符,flags->数据位数,speed->波特率
Output: NULL
Return: void
Others: NULL
*************************************************/
static void setLine(int fd, int flags, int speed)
{
 struct termios t;
 tcgetattr(fd, &t);
 t.c_cflag = flags | CREAD | HUPCL | CLOCAL;
 t.c_iflag = IGNBRK | IGNPAR;
 t.c_oflag = 0;
 t.c_lflag = 0;
 t.c_cc[VMIN ] = 1;
 t.c_cc[VTIME] = 0;
 cfsetispeed(&t, speed);
 cfsetospeed(&t, speed);
 tcsetattr(fd, TCSANOW, &t);
}

/*************************************************
Function: main()
Description: 主函数,打开串口设置参数并改变属性
Calls: setLine()
Called By: NULL
Input: void
Output: NULL
Return: 执行成功返回整数0,其它返回-1
Others: NULL
*************************************************/
int main(void)
{
 int fd;
 fd = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK);
 if (fd < 0)
 {
  fprintf(stderr, "inputattach: '%s' - %s\n",
   device, strerror(errno));
  return -1;
 }
 setLine(fd, CS8, B9600);
 int ldisc = N_MOUSE;
 if (ioctl(fd, TIOCSETD, &ldisc))
 {
  fprintf(stderr, "inputattach: can't set line discipline\n");
  return -1;
 }
 unsigned long devt = SERIO_PENMOUNT|(SERIO_ANY << 8)|(SERIO_ANY << 16);
 if (ioctl(fd, SPIOCSTYPE, &devt))
 {
  fprintf(stderr, "inputattach: can't set device type\n");
  return -1;
 }
 read(fd,NULL,0);
 return 0; 
}

penmount串口触摸屏加载的更多相关文章

  1. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  2. ubuntu arm妙算加载cp210x驱动

    在妙算TK1上安装ros后,插上usb串口竟然没有驱动 无奈装 从http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers. ...

  3. mkimage工具 加载地址和入口地址 内核启动分析

    第三章第二节 mkimage工具制作Linux内核的压缩镜像文件,需要使用到mkimage工具.mkimage这个工具位于u-boot-2013. 04中的tools目录下,它可以用来制作不压缩或者压 ...

  4. Delphi静态加载DLL和动态加载DLL示例

    下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...

  5. [转]在BBB启动时自动加载dtbo(或执行脚本、运行程序)

    启动时自动加载dtbo,实际上就是做了一个cape.官方推荐的方法是用eeprom来实现,请参考我的博文<为BBB制作专属自己的cape(一)>和<为BBB制作专属自己的cape(四 ...

  6. Linux驱动的两种加载方式过程分析

    一.概念简述 在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用.静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新 ...

  7. 嵌入式linux加载引导内核和根文件系统的方法

    总体来说,嵌入式Linux内核和根文件的引导与PC机差不多.嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...

  8. 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法

    S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法    1.开发板说明:  开发板上已有移植好的UBOOT运行.   2.交叉编译工具链为arm-linu-g ...

  9. 转:A10/A20 Bootloader加载过程分析

    来自:http://blog.csdn.net/allen6268198/article/details/12905425 A10/A20 Bootloader加载过程分析 注:由于全志A10和A20 ...

随机推荐

  1. linux程序调试常用命令

    1 调用跟踪 跟踪系统调用 strace ls –l 跟踪库调用  ltrace 2 lsof(list open file) 查看程序命令打开了哪些文件  lsof –p PID; lsof –c ...

  2. zz

    婚恋新现象 杭州男为何更愿意娶外地女孩?-浙江新闻-浙江在线 剩男三无

  3. JS常用的设计模式(11)—— 中介者模式

    中介者对象可以让各个对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互. 打个比方,军火买卖双方为了安全起见,找了一个信任的中介来进行交易.买家A把钱交给中介B,然后从中 ...

  4. leetcode 38

    38. Count and Say The count-and-say sequence is the sequence of integers beginning as follows:1, 11, ...

  5. c89和c99的区别【转】

    //本文转自:http://www.360doc.com/content/10/0324/18/2633_20101093.shtml 注: GCC支持C99, 通过 --std=c99 命令行参数开 ...

  6. javaSE27天学习目录

      第一阶段(java基础知识) 计算机基础知识 Java开发环境的搭建和应用 机制转换 有符号数据表示法(原码.反码.补码) Java语句基础(关键字.标识符.注释.常量.变量.数据类型.运算符) ...

  7. jquery 仿手机屏幕切换界面效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Js图片滚动

    参考博文:http://blog.chinaunix.net/uid-12304670-id-2947067.html <%@ Page Title="" Language= ...

  9. Blend制作的下载动画

    最近使用Blend制作了一个下载动画,感觉很有意思,所以这篇给各位介绍下如何使用Blend制作一个简单的下载动画的步骤 首先拖出一个圆,参数如下: 选中椭圆后单击Properties面板,选择“Fil ...

  10. 工作中nginx配置文件的一些参数记录

    reset_timedout_connection on 告诉nginx关闭不响应的客户端连接.这将会释放那个客户端所占有的内存空间 tcp_nopush on 告诉nginx在一个数据包里发送许多个 ...