1.编译

前段时间非常的郁闷…因为在运行生成校准程序ts_calibrate时总是出现一个错误:ts_open:Inappropriate ioctol for device

后来无数折腾后经过nanfansky指点才知道是自己板子的触摸屏驱动不支持ioctl操作,狂汗…

重新编译tslib

cd tslib-1.3

export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc //指定交叉编译器

./autogen.sh //生成config文件

export PATH=/usr/local/arm/3.4.1/bin:$PATH

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache

./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no

vi src/ts_read_raw.c //修改内容如下

make

****************************************************

在make之前,为了支持触摸屏,打开src/ts_read_raw.c文件,查看触摸屏驱动程序数据结构,看与ts_read_raw.c结构中的哪个一样,就将代码中的 char *defaulttseventtype="UCB1x00"; 修改为 自己板子上对应的驱动结构。

因为我的驱动对应的是h3600_ts_event结构

typedef struct {

unsigned short pressure;

unsigned short x;

unsigned short y;

unsigned short pad;

} TS_RET;

所以修改为:

char *defaulttseventtype="H3600";

************************************

如果不修改源代码,也可以在后面的测试中重新指定环境变量

export TSLIB_TSEVENTTYPE=H3600 //通过这个对tslib中的设备结构体定义

*****************************************************

如果你触摸屏驱动程序支持ioctl操作,上面的configure操作中的--enable-inputapi=no]你可以删除。

然后就可以make了

*************************************************

2.测试:

2.1我在/root/share下新建了一个tslib目录,只copy了一些需要的文件

mkdir /root/share/tslib

mkdir /root/share/tslib/tests

mkdir /root/share/tslib/plugins

mkdir /root/share/tslib/lib

mkdir /root/share/tslib/etc

cp /root/2410s/tslib-1.3/tests/.libs/ts_* /root/share/tslib/tests/ //几个所需的测试文件,比如生成的校准文件,测试文件等等

cp /root/2410s/tslib-1.3/src/.libs/libts-0.0.so.0* /root/share/tslib/lib/ //几个所需的库文件

cp /root/2410s/tslib-1.3/src/.libs/libts.so /root/share/tslib/lib/ //几个所需的库文件

cp /root/2410s/tslib-1.3/plugins/*.so /root/share/tslib/plugins/ //触摸屏插件模块库

cp /root/2410s/tslib-1.3/etc/ts.conf /root/share/tslib/etc/ //配置文件

2.2连接板子

执行minicom

mount –t nfs –o nolock 192.168.0.155:/root/share /mnt/nfs使板子mount上PC,共享路径/root/share

2.3做链接

ln -s /dev/fb/0 /dev/fb0

//帧缓冲设备板子上为/dev/fb/0,但程序默认为/dev/fb0,所以做了一个链接/dev/fb0到/dev/fb/0

ln -sf /dev/touchscreen/0raw /dev/ts

//qtopia要打开/dev/ts,你没有这个文件, 所以 dev下边应该有触摸平的节点,

相当于, qtopia启动要找 /dev/ts, 但是你只有/dev/touchscreen/0raw,

所以你把ts链接到你的触摸屏的文件就可以了!

我得触摸屏设备节点文件为/dev/touchscreen/0raw

所以,建立链接 /dev/ts 到/dev/touchscreen/0raw

(这里要自己针对自己板子具体的文件进行设置,要不然也会报错)

2.4指定环境变量

export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0raw

export T_ROOT=/mnt/nfs/tslib

export LD_LIBRARY_PATH=$T_ROOT/lib //指定tslib库文件路径

export TSLIB_CONSOLEDEVICE=none //tslib运行需要的控制台,这里就是LCD屏幕 ,设定控制台设备为none,否则默认为/dev/tty,

export TSLIB_FBDEVICE=/dev/fb0 //指定帧缓冲设备

export TSLIB_TSDEVICE=/dev/touchscreen/0raw //指定触摸屏设备节点文件

export TSLIB_CALIBFILE=$T_ROOT/etc/pointercal //指定触摸屏校准文件pintercal的存放位置

********************************************************************

注:qte的/src/kernel/qwsmouse_qws.cpp里面校准文件默认打开是在/etc下面为/etc/pointercal,

可是我得板子的根文件系统为只读,所以我放在/mnt/nfs/tslib/etc下面了,

所以在交叉编译qte的时候需要修改qwsmouse_qws.cpp

**************************************************

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf //指定TSLIB配置文件的位置

export TSLIB_PLUGINDIR=$T_ROOT/plugins //指定触摸屏插件所在路径

2.5校准

运行校准程序校准屏幕(5点校准)

cd $T_ROOT/tests

./ts_calibrate //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在$T_ROOT/etc/下面

********************************************

ts_calibrate是一个应用程序,在屏幕上画几个按钮,将用户点击后从ts驱动获得的数据和

屏上的坐标位置通过一套算法来获得校准数据写到一个校准文件里。

******************************************

3.可能遇到的错误分析:

在测试的时候,运行./ts_calibrate又出现了令人十分之郁闷的错误:

ts_config: Success

追查后应该是在打开ts_config中出现了错误(居然报Success,无欲至极)

在网上发现多是这个错误(这是1.4版本的错):

Couldnt load module input

No raw modules loaded

tsconfig: Success

我没有上面那两行的错误,不过应该是一样的错误原因

那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错

查询了ts_load_module.c这个文件发现网上和自己的不太一样(网上公布的源码是1.4或者是0.1.1的吧)我的是1.3的

我下载了tslib-0.1.1的后重新实验 就发现错误的是这样子的(第一个错误是由ts.conf所决定的)

Couldnt load module pthres

No raw modules loaded

tsconfig: Success

阅读了tslib 的原代码,知道了cstdlib 库里的一个函数: getenv

是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。

其环境变量默认的值在readme中有注明。

加载插件模块时出出错分析:

ts_calibrate会打开ts_config

ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),

然后根据这个文件逐个加载插件库

1.3版本的ts.conf内容为

module mousebuts

moudle variance xlimit=50 ylimit=50 pthreshold=3

moudle dejitter xdelta=1 ydelta=1 pthreshold=3

moudle linear

ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,

然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!

Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen

错误就应该出在构造的库文件名是错误的---其指定的文件不存在

---从而导致 dlopen无法加载。所以才提示找不到文件或目录!

那么这样就是应该把需要的mousebuts.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中

(上面修正后作了这一步,就可以拉,就不会出现错误拉)

**************************************

这里来谈一谈tslib-1.4,和1.3有一点点不一样,主要是配置文件的差别

一般来说,tsllib-1.4种一个完整的ts.conf配置文件如下所示:

module_raw input

module pthres

module variance delta=30

module dejitter delta=100

module linear

出现这个错误

Couldnt load module input

No raw modules loaded

tsconfig: Success

第一行告诉tslib从linux的输入设备读取数据,需要用到input这个模块,也就是plugin目录下的input.so文件,

所以你的TSLIB_PLUGINDIR一定要配置正确,让tslib能够找到模块文件。

其他参数分别控制触摸点的连续下压、变化宽度、轨迹变化和线性校准。

也是要把其对应的需要的几个库文件复制到/tslib/plugins中

第二行导致"No raw modules loaded."的原因有两个:

注意:一是你的ts.conf中没有指定module_raw,自带的ts.conf的所有module_raw都被注释掉了,

# Uncomment if you wish to use the linux input layer event interface

# module_raw input

# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d

# module_raw collie

# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860

# module_raw corgi

# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface

# module_raw ucb1x00

# Uncomment if you're using an HP iPaq h3600 or similar

#module_raw h3600

# Uncomment if you're using a Hitachi Webpad

# module_raw mk712

# Uncomment if you're using an IBM Arctic II

# module_raw arctic2

你应该打开至少一个module_raw选项,有人就选择了input,去掉了它的注释

得到module_raw input

另一个原因就是你没有正确配置TSLIB_PLUGINDIR,tslib从你指定的目录中没有找到plugin需要的模块文件,

请检查你的路径和文件。

tslib下载:

tslib-1.3

文件:

tslib-1.3.tar.bz2

大小:

32KB

下载:

tslib-0.1.1

文件:

tslib-0.1.1.tar.bz2

大小:

46KB

下载:

tslib Linux命令测试,Tslib的编译和触摸屏测试相关推荐

  1. tslib Linux命令测试,tslib 的编译和触摸屏的测试

    在编写完触摸屏的驱动程序以后,就可以使用通过编译tslib确定自己的驱动程序是否可以,也可以通过tslib调试自己对坐标的处理. 一. 编译 cd /root/imx27/tslib-1.3 expo ...

  2. Linux下Json库的编译及代码测试

    一.Json基础 JSON(JavascriptObject Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读.尽管JSON是在Javascript的一个子集,但JSON是独 ...

  3. hadoop如何使用linux命令,使用配置hadoop中常用的Linux(ubuntu)命令

    生成key: $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized ...

  4. mtk平台android编译命令,MTK 常见的编译命令

    1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下: alps/kernel/ alps/medi ...

  5. 20222-02-16 Linux 触摸屏测试工具tslib工具下载、编译、安装,buildroot ARM平台上实际运行

    一.tslib全称英文是C library for filtering touchscreen events,是捕捉触摸屏事件的工具. 二.下载地址https://github.com/libts/t ...

  6. ko文件卸载 linux_调试lcd时候给linux单板移植tslib

    点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述  tslib背景: 在采用触摸屏的移动终端中,触摸屏性能的调 ...

  7. base64 linux_渗透测试常用Linux命令总结

    作为一名网络安全工作者,一说到渗透测试,所有人都会想到Kali Linux,Kali Linux系统是一款预装了许多渗透测试软件的Linux系统,是最常用的一款渗透测试系统工具,既然是一款Linux系 ...

  8. linux编译python语言指令_Python实现Linux命令xxd -i功能

    一. Linux xxd -i功能 Linux系统xxd命令使用二进制或十六进制格式显示文件内容.若未指定outfile参数,则将结果显示在终端屏幕上:否则输出到outfile中.详细的用法可参考li ...

  9. python 测试linux dev文件,Linux测试开发人员要掌握的Linux命令有哪些?

    今天小编要跟大家分享的文章是关于Linux测试开发人员要掌握的学习Linux和 一.文件和目录相关 文件和目录相关 1.进入目录--cd cd /usr/local //进入/usr/local这个目 ...

最新文章

  1. http://forensics.idealtest.org CASIA图像篡改数据库
  2. 安装交叉工具链arm-linux-gcc
  3. How to mannuly configure vmtools in VM-Ware?
  4. 一起学nRF51xx 4 -  int
  5. Vmware虚拟机网络及IP配置
  6. ACM:回溯,八皇后问题,素数环
  7. python3网络编程传输图片_python网络编程(图片传输)
  8. sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具
  9. 代码质量度量标准_追求代码质量(2): 监视圈复杂度
  10. 学python可以做什么职业-python学完之后比较适合哪些职业工作呢?
  11. Rust: 亿元估值AI网红代码的不同版本
  12. CRC8校验算法总结
  13. ffmpeg将视频转图片,图片转视频
  14. Vue - 选择器拼音快速检索目标(pinyin-match)
  15. Tomcat 开启远程监控(JMX)
  16. 手机免流量,还会是天方夜谭吗?
  17. B、M、MB、K、KB、G、GB的关系
  18. 怎么把raw转换成jpg格式?推荐两个raw转jpg的方法
  19. python逐行写入csv_python 实现一次性在文件中写入多行的方法
  20. LK源码解析 9 总结

热门文章

  1. 神武手游创建人物等待服务器响应,神武2手游成长全流程变强必经之路 人物增强篇...
  2. python控制蓝牙音响_[ESP32+MicroPython]智能音响控制
  3. 叮咚代shuaV1.0PJ版(去授权)
  4. python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复
  5. linux 软件 库,linux 软件/库 命令集合
  6. 蓝桥杯 PREV-15 格子刷油漆
  7. linux asm 文件系统,LINUX 文件系统精通指南---讲的非常好
  8. 魔兽世界怀旧服务器消息,魔兽世界怀旧服最新消息!详细魔兽世界怀旧服介绍!...
  9. 连接不了虚拟机mysql服务器,本地连接虚拟机MySQL提示is not allowed to connect
  10. android qq校验,安卓版QQ更新已可注销:需手机验证完成 不可恢复