penmount串口触摸屏加载
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串口触摸屏加载的更多相关文章
- linux内核启动以及文件系统的加载过程
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...
- ubuntu arm妙算加载cp210x驱动
在妙算TK1上安装ros后,插上usb串口竟然没有驱动 无奈装 从http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers. ...
- mkimage工具 加载地址和入口地址 内核启动分析
第三章第二节 mkimage工具制作Linux内核的压缩镜像文件,需要使用到mkimage工具.mkimage这个工具位于u-boot-2013. 04中的tools目录下,它可以用来制作不压缩或者压 ...
- Delphi静态加载DLL和动态加载DLL示例
下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...
- [转]在BBB启动时自动加载dtbo(或执行脚本、运行程序)
启动时自动加载dtbo,实际上就是做了一个cape.官方推荐的方法是用eeprom来实现,请参考我的博文<为BBB制作专属自己的cape(一)>和<为BBB制作专属自己的cape(四 ...
- Linux驱动的两种加载方式过程分析
一.概念简述 在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用.静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新 ...
- 嵌入式linux加载引导内核和根文件系统的方法
总体来说,嵌入式Linux内核和根文件的引导与PC机差不多.嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...
- 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法
S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法 1.开发板说明: 开发板上已有移植好的UBOOT运行. 2.交叉编译工具链为arm-linu-g ...
- 转:A10/A20 Bootloader加载过程分析
来自:http://blog.csdn.net/allen6268198/article/details/12905425 A10/A20 Bootloader加载过程分析 注:由于全志A10和A20 ...
随机推荐
- Sql2008 php
Sql2008支持php的擴展插件 http://www.microsoft.com/download/en/search.aspx?q=SQL+Server+for+PHP 全部 http://w ...
- Eclipse Egit 安装
help->Install new software-> 在 work within 中输入以下网址 安装地址: http://download.eclipse.org/egit/upda ...
- Unieap3.5-Grid编辑列中数字与下拉改变
Grid列表中字段改变事件 <cell label="单据金额" width='20%' name="NFEE_1" id="NFEE_1&qu ...
- su:认证失败
使用命令[su - root]切换用户,提示[su:认证失败] 原因:Ubuntu安装之后,root用户默认是被锁定的,不允许登录,也不允许su到root. 解决:重新设置密码 在终端输入命令:sud ...
- JSON-JQuery常用技巧
1:Jquery对象选择查找 var group = $(".classeslist li"); class 为 classeslist 内部 的所有 li 元素对象 遍历: fo ...
- 十五、struts2中的拦截器(框架功能核心)
十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...
- MBR解析
先推广一下QQ群:61618925.欢迎各位爱好编程的朋友加入. 一.程序界面 二.关键部分代码: 1.数据结构定义 #define MBRSIZE 512 #define BOOTRECORDSIZ ...
- JavaScript高级 引用类型(二)《JavaScript高级程序设计(第三版)》
五.Function类型 是JS中最重要的一种引用类型 构造方式:(三种) 函数声明: 函数表达式定义: 函数构造器: 没有重载: 如果有两个相同函数名的函数,执行时,执行最近被定义的一次. 函数声明 ...
- Sqlserver数据库存储路径的修改
Sqlserver数据库存储路径的修改 Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在 ...
- Html辅助方法(分页、下拉框)
引用命名空间: using System.Text; using System.Web.Mvc; Html分页方法 #region 分页Html辅助方法 /// <summary> /// ...