触摸屏插件: tslib-1.4.tar.gz
交叉编译器:arm-linux-gcc4.5.1
由于tiny6410的一线触摸,所以需要改程序,照别人的:
打开tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
- static int ts_input_read(struct tslib_module_info *inf,
- struct ts_sample *samp, int nr)
- {
- printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
- struct tslib_input *i = (struct tslib_input*)inf;
- struct tsdev *ts = inf->dev;
- struct input_event ev;
- int ret = nr;
- int total = 0;
- unsigned long jjts;
- while(total<nr)
- {
- ret =read(ts->fd, &jjts,sizeof(jjts));
- if (ret==-1) continue;
- samp->pressure=(jjts>>31)& 0x01;
- samp->x=(jjts>>16)& 0xffff;
- samp->y=jjts & 0xffff;
- samp++;
- total++;
- }
- ret=total;
- return ret;
- }
一.下载并编译tslib-1.4
export PATH=/usr/local/arm/3.4.1/bin:$PATH(若交叉编译器已设置好,此步可省)
tar xzvf tslib-1.4.tar.gz
cd tslib/
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no -prefix=/usr/local/tslib-1.4
make
make install
cd /usr/local/tslib-1.4/etc
vi ts.conf
去掉module_raw input前面的#号
我的最终ts.conf内容为:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
编译成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹
(11)修改/opt/tslib/etc/ts.conf 文件,删除其中内容,改为
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
第一行是tslib从linux的输入设备读取数据时需要用到的模块,这里指定的模块为input,具体需要用到哪个模块,需要参考其他数据。
第二行的pthres为Tslib提供的触摸屏灵敏度门槛插件。
第三行的variance为Tslib提供的触摸屏滤波算法插件。
第四行的dejitter为Tslib 提供的触摸屏去噪算法插件。
第五行linear为Tslib提供的触摸屏坐标变换插件。
(12)将/usr/local下的tslib-1.4文件夹拷贝到arm文件系统的/usr/local/下
(13)设置环境变量脚本tslib.sh
- #!/bin/sh
- export TSLIB_ROOT=/usr/local/tslib-1.4
- export TSLIB_TSDEVICE=/dev/touchscreen-1wire
- export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
- export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
- export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
- export TSLIB_CONSOLEDEVICE=/dev/tty
- export TSLIB_FBDEVICE=/dev/fb0
(14)启动arm板,命令行下执行脚本
source tslib.sh
在tiny6410板子上 cd /usr/local/tslib-1.4/ bin
./.....即可(几个测试例子)