博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助 

冷子歆。。。陪你吹四季分明的风

面朝大海 春暖花开
irisxin.cublog.cn
关于作者  
姓名:歆
职业:女巫
年龄:打开随意门
个性介绍:魔法...

我的分类  




工作笔记——Tslib的编译和触摸屏测试

1.编译

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

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

 

重新编译tslib

 

cd tslib-1.3

 

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

 

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

 

export PATH=/usr/local/arm/2.95.3/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使板子mountPC,共享路径/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

 

第一行告诉tsliblinux的输入设备读取数据,需要用到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_PLUGINDIRtslib从你指定的目录中没有找到plugin需要的模块文件,

请检查你的路径和文件。

 
tslib下载:
tslib-1.3
文件: tslib-1.3.tar.bz2
大小: 32KB
下载: 下载
 
tslib-0.1.1
文件: tslib-0.1.1.tar.bz2
大小: 46KB
下载: 下载
 

 TAG tslib 触摸屏
 发表于: 2007-04-20,修改于: 2007-11-21 16:34
 已浏览6346次,有评论36条
推荐 投诉

  网友评论
  本站网友 时间:2007-04-21 23:42:06 IP地址:218.59.80.★
查资料经过你的站,做了不少积累,很有用。有机会的话向你多请教些。QQ:99348098

  子歆 时间:2007-04-23 21:03:32 IP地址:58.19.18.★
只能说一起交流吧
我也是请教了很多人才知道一点点的!

  jeniferdu 时间:2007-05-06 21:14:09 IP地址:59.36.48.★
这个````` 太难了, 不懂, 帮不上忙哦

  qiezi 时间:2007-05-23 21:41:44 IP地址:218.108.29.★
你好,我照你所说的方法make之后在plugins文件夹下面 ,怎么会找不到以下四个.so文件呢,仅仅在./plugins/.libs文件夹下面找到如下4个.o文件,但是,把.o文件cp到plugins仍然会出现那个sucess的错误= =
不知是那里的原因,指点指点吧
========================
那么这样就是应该把需要的mousebuts.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中

  qiezi 时间:2007-05-24 11:19:28 IP地址:210.32.156.★
换了个0.1.1版本,竟然好了orz

Blog作者的回复:
sorry~才看到你的留言。
问题解决了就好了:)

  ashizl 时间:2007-06-20 10:05:57 IP地址:202.118.75.★
正在做触摸屏校正,缺少资料,先谢过了。

Blog作者的回复:
表客气!learn to give~呵:)
希望对你有所帮助!

  ashizl 时间:2007-06-22 09:45:02 IP地址:202.118.75.★
你好.请问你的tslib1.3在哪个地方下载的?我一直没有找到.不知道能否给我传一份?我的邮箱是ashizl111@sina.com.
先谢过了.

Blog作者的回复:
已mail,请查收。

  ashizl 时间:2007-06-24 15:44:55 IP地址:202.118.75.★
mail已收到,正在实验中,多谢.

  ashizl 时间:2007-06-24 15:45:00 IP地址:202.118.75.★
mail已收到,正在实验中,多谢.

  ashizl 时间:2007-06-28 14:59:00 IP地址:202.118.75.★
请问楼主,为什么我在板子上运行./ts_test的时候,总是提示我:ts_open: No such file or directory?
望指教。谢谢。

Blog作者的回复:
天!这个问题曾经也折腾了我好久
在tslib的config选项中添加
--enable-inputapi=no 

因为这个情况一般是你的触摸屏驱程不支持ioctl操作。

  ashizl 时间:2007-06-29 09:36:49 IP地址:202.118.75.★
多谢楼主。

Blog作者的回复:
不客气:)

  ashizl 时间:2007-07-02 15:49:53 IP地址:202.118.75.★
楼主好,我现在可以在板子上运行ts_calibrate了,但是必须得像你说的那样先手工声明环境变量,如果我想不手工声明,让板子上电就运行ts_calibrate,该如何设置呢??
先谢过!

Blog作者的回复:
如果为可写根文件系统,可以修改开发板/etc/profile文件,将那些需要设置的环境变量写入,就不用每次上电设置声明了。

  ashizl 时间:2007-07-05 14:43:38 IP地址:202.118.75.★
多谢楼主!

  本站网友 时间:2007-07-16 17:33:37 IP地址:59.69.64.★
请问搂主有没有在2.6内核上面移植 ,有没有2.6内核触摸屏的驱动呢?有的话能不能发给我一下。我的信箱是  zhzijie.27@163.com
不慎感激!

  llj521gt 时间:2007-07-22 20:54:14 IP地址:221.215.84.★
触摸屏校正之后 由该做什么工作啊?虽然校正了触摸屏但后面的工作却没了头目,能不能给我一些资料或事例?

  llj521gt 时间:2007-07-22 20:57:17 IP地址:221.215.84.★
我的QQ号是:345032160。 邮箱是weixiaomeitian8@163.com.期待着你的回复(最好是 qq)

  本站网友 时间:2007-08-20 09:31:57 IP地址:221.11.5.★
你好,我现在也是在做这方面的,修改qt中相关代码和设置后,只能进入左上角的企鹅图标界面,往后就没反映了,定标界面也进不去,我能不能具体和你交流一下,谢谢,我的qq:80109455

  本站网友 时间:2007-08-20 17:17:54 IP地址:221.11.5.★
楼主,我按你的方法在板子上运行./ts_calibrate时,出错,错误信息为:
mkdir:cannot creat diretory '/mnt/tslib/test/.libs':permission denied.
cd:can't cd to tslib的安装目录/tests
eval:/usr/local/arm/2.95.3/bin/arm-linux-acc:no such file or directory
另外:你的文章中说cp /root/2410s/tslib1.3/tests/.libs/ts_* /root/share/tslib/tests/,为什么我的tslib1.3/tests目录下怎么没有.libs这个目录,直接就是ts_*,所以我就直接cp /root/2410s/tslib-1.3/tests/ts_* /root/share/tslib/tests/ , 后面的都如此,可以么?   楼主能不能加我qq,具体向你请教一下谢谢!qq:80109455

  本站网友 时间:2007-08-21 15:45:16 IP地址:202.192.32.★
99,我已经按你的方法配置了整个环境,我用的就tslib-0.1.1,不过我运行ts_calibrate和ts_test时总是提示:
pc : [<4007f5dc>]    lr : [<00009270>]    Not tainted
sp : bffc4af0  ip : bffc4b00  fp : bffc4afc
r10: 400f026c  r9 : bfffd3dc  r8 : 00000002
r7 : bffffaa4  r6 : 00000818  r5 : 40021716  r4 : 00013a28
r3 : 00013a20  r2 : 00000000  r1 : 00009e2c  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode USER_32  Segment user
Control: C000317F  Table: 30988000  DAC: 00000015
pc : [<4007f5dc>]    lr : [<00009270>]    Not tainted
sp : bffc4a70  ip : bffc4a80  fp : bffc4a7c
r10: 400f026c  r9 : bfffd3dc  r8 : 00000002
r7 : bffffaa4  r6 : 00000818  r5 : 40021716  r4 : 00013a28
r3 : 00013a20  r2 : 00000000  r1 : 00009e2c  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode USER_32  Segment user
sp : bffc5670  00000  r1 : 00009e2c  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode USER_32  Segment user
不停的提示,用ctrl+c也中断不了,能告诉我这是为什么吗?

  yufan_lu 时间:2007-08-22 09:32:04 IP地址:58.60.231.★
建议不要用0.11,用1.3再试一下.

  本站网友 时间:2007-08-24 20:22:58 IP地址:202.192.32.★
用1.3试过了,编译完后plugsins文件夹中只有.a文件,没有.so文件,运行./s_calibrate时提示tsconfig: Success,我已经把mousebuts.a variance.a dejitter.a linear.a文件放目标板的plugsins文件夹中了.后来我把tslib0.11中的.SO文件放到plugsins文件夹中就行了,是显示了光标, 不过点屏没反应,MINICOM就只显示一句xres = 240, yres = 320,就不动了,点屏没反应,请各位大大指点一下!!
    谢谢!!

  本站网友 时间:2007-08-24 20:44:58 IP地址:202.192.32.★
原来是我改Makefile改错了,有那四个.SO文件生成了,不过还是点屏没反应,请指点一下!!!!

  yqzq 时间:2007-09-08 17:02:21 IP地址:61.150.62.★
谢谢!!你的文章写的很好!

  本站网友 时间:2007-09-13 16:27:23 IP地址:222.84.101.★
看了版主的文章受益匪浅。多谢版主这么辛勤热情。我有一个问题请教:
我编译ts-1.3.9后,没有生成mousebuts.so variance.so dejitter.so linear.so
这几个文件,是设置不对,还是要另外编译,单独生成这些文件?
期望你的答复。

  yufan_lu 时间:2007-09-13 17:01:41 IP地址:58.60.231.★
编译很简单,并不要进行什么特殊的设置,有可能你的版本不对,或者是缺少什么文件.多试几次,或到网上别下个版本试下,(另外,有知道你是不是在用qtopia,qtioia是自带校准的,所以并不需要用tslib),
谢谢(代版主)

  本站网友 时间:2008-03-12 13:28:43 IP地址:59.41.253.★
看了以后受益很多呀!但是我自己编译的时候总是出现 ts_open no such file or diredtory !我configure 的时候加上了 --enable-inputapi=no
为什么会出现这样的情况呢?

  本站网友 时间:2008-04-17 10:16:10 IP地址:211.83.96.★
谢谢你的付出!
在网上找了老半天了

  本站网友 时间:2008-08-05 16:13:20 IP地址:123.180.1.★
我把qt2.11移植到了2410的板子上,
/dev/input 下面有:event0  mouse0  ts0   tsraw0  event1  mouse1  ts1   tsraw1  mice  
1. 设置好了环境变量:
  export HOME=/tmp
      export QTDIR=/tmp
      export QPEDIR=/tmp 
      export PATH=$QPEDIR/bin:$PATH
      export QWS_MOUSE_PROTO=TPanel:/dev/input/tsraw0    
      export LD_LIBRARY_PATH=/tmp/lib 
      export TSLIB_TSDEVICE=/dev/input/tsraw0  
  export TSLIB_CONSOLEDEVICE=none 
      export TSLIB_FBDEVICE=/dev/fb0  
      export TSLIB_CALIBFILE=/tmp/pointercal    
      export TSLIB_CONFFILE=/tmp/ts.conf      
  export TSLIB_PLUGINDIR=/tmp/lib          
2. 进行了触摸屏测试,
  校准屏幕(5点校准) 
  cd /tmp/bin/tests 
      ./ts_calibrate 
      会陆续在LCD的4个角和中点出现光标,点击光标进行校准,生成校准文件
  再运行测试
    ./ts_test
        这时LCD上出现光标,你的手指点哪里光标就会跟到哪里才成功 
3. 然后运行:./bin/qpe  出现如下信息
Warning: TimeZone::data Can't create a valid data object for 'Europe/Oslo'
Warning: language message - en_US
Warning: and its not null
Warning: loading /tmp/i18n/en_US/qt.qm
Warning: loading /tmp/i18n/en_US/qpe.qm
Warning: loading /tmp/i18n/en_US/libqpe.qm
Warning: loading /tmp/i18n/en_US/libqtopia.qm
Warning: loading /tmp/i18n/en_US/language.qm
Warning: loading /tmp/i18n/en_US/timezone.qm
Warning: loading /tmp/i18n/en_US/systemtime.qm

然后就出现”Tap anywhere to continue”的界面,但是不能进行:qpe5点校准,怎么点触摸屏也是没有反应。没有光标。
请问这是哪里的问题呀!

  woailaoxiang 时间:2008-10-01 13:55:47 IP地址:221.11.46.★
    用户名: 密码: 免费注册
昵称: 验证码:   匿名  
楼主你好:
我的错误信息:
# ./ts_calibrate
xres = 480, yres = 272
Took 2 samples...
Top left : X = -12436180 Y = -12310713
Took 2 samples...
Top right: X = -12436180 Y = -12310713
Took 2 samples...
Bot right: X = -12436180 Y = -12310713
Took 2 samples...
Bot left : X = -12436180 Y = -12310713
Took 2 samples...
Middle: X = -12436180 Y = -12310713
31.863007 -0.009098 0.009174
-2.757997 -0.006065 0.006116
Calibration constants: 2088174 -596 601 -180748 -397 400 65536
#

帮忙给分析一下原因,是不是触摸屏驱动的原因! 
  

  kjpioo 时间:2008-10-26 22:12:04 IP地址:202.107.200.★
上面“本站网友”的留言:
----------------
    

看了以后受益很多呀!但是我自己编译的时候总是出现 ts_open no such file or diredtory !我configure 的时候加上了 --enable-inputapi=no

为什么会出现这样的情况呢?
----------------
ts_open no such file or diredtory
这个我认为是 在ts_calibrate 中打开设备的时候,不存在相应设备导致。
这个设备可以是你的TSLIB_TSDEVICE所指的设备。从代码ts_calibrate.c里面可以看出。

  kjpioo 时间:2008-10-26 22:13:18 IP地址:202.107.200.★
解决方法是先建立相应的设备文件

  本站网友 时间:2008-11-14 18:36:06 IP地址:222.66.95.★
请问:我编译出ts_test 等程序,下载到目标板上运行,怎么会出现
./ts_calibrate: cd: 1: can't cd to /home/zrg/atmel_arm9/ts_test/tslib-1.3/tests
./ts_calibrate: eval: 1: /home/zrg/atmel_arm9/arm-2007q1/bin/arm-none-linux-gnue
abi-gcc: not found
怎么回去找我的这些目录啊??

  本站网友 时间:2008-11-17 10:44:54 IP地址:140.242.6.★
我在做linux触摸屏的开发,出现一个很奇怪的问题:
首先我用的是一个UART的触摸控制模块,当在屏幕触摸时就会用RS232时序发送一个包,b1 xx xx yy yy ba,其中xx 和 yy是坐标值,b1表示按下,如果是b0表示松开。
我在tslib中的raw_read中打开ttyS1,接收数据,全部数据接收都正确了,ts_calibrate 和ts_test都执行通过。
然后问题就是出现在与QT的链接,我写了个响应按键的小程序,运行的时候可以看到鼠标跟着我的手指动了,位置也很准确,奇怪的是没有鼠标按下的消息,我把我的按钮大小做到全屏了,还是接收不到clicked消息。
我还跟踪到了QT代码里面的mouseChanged()函数了,发现里面的值都正确。
请大家帮我看看哪里还有什么问题啊

  liangyanhui8011 时间:2009-02-07 01:13:13 IP地址:116.24.255.★
楼主你好:
我的错误信息:
# ./ts_calibrate
xres = 320, yres = 240

ts_read():no such file or diredtory




但是在触屏设备应该是打开成功了,读取配置文件和加载插件也是成功的,但是程序出现这个后错误就自终止程序。
后面跟踪代码发现出错在ts_read_raw.c中的


int ts_read_raw(struct tsdev *ts, struct ts_sample *samp, int nr)

{
................................
...............................
#ifdef USE_PRESSURE_HACK
       
    }

#endif

    }
              else { /* Use normal UCB1x00 type events */
                        evt = alloca(sizeof(*evt) * nr);

              ret = read(ts->fd, evt, sizeof(*evt) * nr);    出错终止的原因是在这里的ret返回0而直接返回了-1值,但是ts->fd是>0也是成功打开触摸屏返回的设备文件描述,为什么ret会是read而得到0了。
 
                 if(ret > 0)
                        {
...........................
............................
                        }
                        else
                        {
         return -1;
                         }

....................................
..................................

}




由终止程序是由于ts_calibrate.c中

在调用getxy函数时,又调用上面的ts_read_raw返回负值导致程序终止的。如下

static int getxy(struct tsdev *ts, int *x, int *y)

{
......................................
        /* Read until we get a touch. */

       do
      {

    if (ts_read_raw(ts, &samp[0], 1) < 0)   //出错处返回负数导致整个程序终止的。
             {
                perror("ts_read");
      close_framebuffer();
      exit(1);
            }

      } while (samp[0].pressure == 0);
.......................................


}


想问一下,楼主,我这个出现这种错误有可能是什么原因造成的了,谢谢

  本站网友 时间:2009-04-09 21:09:08 IP地址:222.69.242.★
我在板子上运行的时候提示 ts_open: Invalid arguement,编译好发现plugins文件夹里没有四个.so文件,后来我在/usr/local/share/plugins里找到这四个.so文件,把所有文件放到/opt/下后,在/bin/里建立一个脚本,环境都设置了,运行时就提示ts_open: Invalid arguement,不知道怎么回事,请帮帮忙!

Blog作者的回复:
hi~ 两年前做的了,真记不清楚了,而且在我印象中,自己没有碰到过该错误。

当时我的做法时,碰到了错误,到tsilb里面的源代码里去找,哪里出现了这段“报错代码”,然后根据报错的条件逐层往上找。

耐心点,会找到问题根源的。

  本站网友 时间:2009-06-12 17:34:48 IP地址:61.150.43.★
好楼主啊


  发表评论



Copyright © 2001-2010 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.77724

京ICP证041476号