qte的tslib-path补丁和Tslib的编译可支持触摸屏
来源:优易学  2011-12-16 13:02:38   【优易学:中国教育考试门户网】   资料下载   IT书店
  下面是移植过程:
  解压文件,生成tslib-1.3的目录
  #cd tslib-1.3
  #mkdir image //安装目录
  #./autogen.sh //生成config文件
  #echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
  #./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$PWD/image --enable-inputapi=no
  红色的部分是触摸屏驱动不支持ioctl操作
  #make
  为了防止出现“libtool:link: only absolute run-paths are allowed“的错误,在/tslib/plugins/Makefile里面找rpath,找到将其注释并加上绝对路径。
  #LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
  LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`
  #make install
  编译完成后在image目录里就是需要移植到板内的文件。
  我这边是采用nfs和主机连结的。
  设置板内的环境变量
  export LD_LIBRARY_PATH=/mnt/nfs/tslib/lib:$LD_LIBRARY_PATH
  export QWS_MOUSE_PROTO=TPanel:/dev/h3600_tsraw //设备文件根据你的更改
  export TSLIB_CALIBFILE=/mnt/nfs/tslib/pointercal
  export TSLIB_CONFFILE=/mnt/nfs/tslib/etc/ts.conf
  export TSLIB_CONSOLEDEVICE=none
  export TSLIB_FBDEVICE=/dev/fb0
  export TSLIB_PLUGINDIR=/mnt/nfs/tslib/plugins
  export TSLIB_TSDEVICE=/dev/h3600_tsraw //设备文件根据你的更改
  export TSLIB_TSEVENTTYPE="H3600"
  置好环境变量就可以对触摸屏校准了,到目录=/mnt/nfs/tslib/bin下执行
  #./ts_calibrate
  屏摸上会出现5点校准,校准完成后看一下目录/mnt/nfs/tslib/下有没有生成pointercal文件
  #ls /mnt/nfs/tslib/
  需要生成pointercal文件才可以 如果没有生成,请确认你的这个目录下是否可写操作
  然后运行test文件
  #./ts_test
  要求运行后触摸笔指哪,光标就跟到哪。就这算成功了。
  比较遗憾的是我的这步却是失败的,触摸笔一按,光标就飞掉了,没能达到预期的效果,后来查了很多资料都没有完成。直到我把tslib-1.3换成tslib-0.1.1(http://blogimg.chinaunix.net/blog/upfile/070622110728.bz2)后却成功了。tslib-0.1.1编译过程与tslib-1.3类似,但是TSLIB_PLUGINDIR=/mnt/nfs/tslib/plugins目录需要换成TSLIB_PLUGINDIR=/mnt/nfs/tslib/lib/ts了。
  不过运行了
  #./ts_test
  后抖动还是非常的历害,调整了参数还是不理想,后来在网上查到有人说可以把屏的金属外壳接地校果会好,但我把屏的金属外壳接地后校果没有什么改善,不过你们也可以试验一下。
  后来就放弃了tslib与qte相结合的方式来支持触摸屏。不过把tslib与qte相结合的步骤列在下面,以便给用tslib校验效果不错的人参考:
  先下载tslib-path 支持qte-3.3.4版本,如果在网上找不到tslib-path的朋友可以留言,留下你的email 我给你发过去。
  给qte-3.3.4打补丁使其支持tslib
  网上下的补丁文件有点问题用patch命令打补丁不完全,于是手工打补丁
  按照patch的方法,增加两个文件到src/embedded/下,修改相应文件src/embedded/qmousedriverfactory_qws.cpp, src/embedded/qt_embedded.pri,configure
  交叉编译
  设置QTDIR
  ./configure –embedded arm –thread –qvfb –qconfig-large –qt-mouse-tslib –I$QTDIR/include –L$QTDIR/lib –lts
  make
  这里需要强制指定tslib库位置,否则,会报错找不到libts。
  结果make仍然报错,说libts不兼容。
  /usr/bin/ld: skipping incompatible /home/hjcai/qt-arm/qte-arm-tslib/lib/libts.so when searching for -lts
  /usr/bin/ld: cannot find –lts
  读错误信息发现是编译到src/moc出现上述问题,
  于是先:
  echo yes |./configure -embedded arm -thread
  cd src/moc
  make
  然后再:
  echo yes |./configure -embedded arm –thread –qt-mouse-tslib –I$QTDIR/include –L$QTDIR/lib
  make
  编译成功,将生成的QT库和编译tslib生成的目录全部下到开发板。
  设置QTE环境变量
  export QTDIR=/qte-3.3.4
  export LD_LIBRARY_PATH=$QTDIR/lib
  tslib环境变量之前的一样。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训