|
文件: |
ztslib.rar |
大小: |
414KB |
下载: |
下载 | |
里面有3个部分~
1:
ztslib.c是模块文件~ 添加到内核的/driver/input目录下后,在该目录下的Makefile中增加一条 obj-$(CONFIG_INPUT_EVDEV) += ztslib.o
这样选中evdev模块后就同时加载了TSLIB模块 也可以自己在Kconfig中写一个条目来控制
TSLIB模块所使用的字符设备为ztslib%d 在/dev下 , 现在还不清楚为什么不跟随event在/dev/input目录下
TSLIB模块所返回的结构如下
struct ztslib_event {
int x;
int y;
unsigned int pressure;
};
模块最大支持10个设备 可以并发读取~
模块的线性校准参数默认为我的触摸屏的校准参数~ 需要使用write来写入~
如果大家知道自己触摸屏的校准参数 , 可以直接更改tslib_linear结构中的值 , 就不用再写入参数了~
写入格式为"参数1 参数2 参数3 参数4 参数5 参数6 参数7 " 每个参数后均需要一个空格 例如 "1 -2 3 4 -5 6 -7 "
编译后不能动态选择校准模块,只能在编译前通过宏来选择
在文件头部有下面3个宏,注释宏则不会编译对应的模块
#define PTHRES
#define VARIANCE
#define DEJTTER
LINEAR模块是默认加载的~
现在VARIANCE模块还没调试成功~ 所以用#if 0注释掉了~
2:
write_ztslib.c 是我写的一个应用程序,用于自动加载/etc/pointercal中的参数~
arm-linux-gcc -o test -c write_ztslib.c 编译即可
值得注意的是其中的printf语句不能注释掉,注释之后wtire操作会在合并两个字符串之前进行
从而导致最后一个参数写入失败 变成0 现在还不清楚为什么........
3:
tslib目录是我稍微改写了一下的源代码~ 由于之前一直编译不出SO动态库~ 一怒就改成了静态链接的 = 3=
直接make就行~ 使用arm-linux-gcc编译器~
make完成之后有3个可执行文件~
ts_calibrate和ts_test和以前的一样
ztslib_test是用于测试TSLIB模块的~ 基本和ts_test差不多 不过并没有使用任何的校准模块~ 默认以/dev/ztslib0为设备
PS: 之前是想做成动态模块进行加载的~ 但是发现很多函数没有export出来~ 所以只能静态编译进内核
PS2:/etc/pointercal 校准参数依然要使用ts_calibrate进行生成
= 3= 务必请大家提出修改意见~ 让该模块做得更好~