加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

QTE触摸屏加载

时间:2013-09-03  来源:123485.com  作者:9stone

触摸屏加载有两种方法:
1、QTE本身触摸屏加载;
    主要注意三个内容:

  1. 编译QTE时,在其自定义配置文件(位于QTDIR/src/tools/qconfig-XXX.h,其XXX为自定义的 名字,该特征字可以在configure时用-qconfig XXX指定)所应加的内容:
    #define QT_QWS_IPAQ
    #define QT_QWS_IPAQ_RAW
    去掉鼠标自动识别功能 :#define QT_NO_QWS_MOUSE_AUTO
    去掉不用的鼠标驱动,(在实际中,这一步可以不要,但对于缩减QTE的大小很有帮助),方法主要是在configure时设置配置参数为-no- mouse-pc -no-mouse-bus -no-mouse-yopy -no-mouse-vr41xx 。
    以该编译好的QTE库为基础,编译应用程序;
  2. 在目标机上,要将触摸屏驱动链接好。在QTE3.0的版本中,如果定义了上述的两个IPAQ相关的宏,其默认打开设备文件/dev/h3600_tsraw。如果只定义QT_QWS_IPAQ,则打开设备文件为/dev/h3600_ts。
  3. 在目标机上,设定环境变量:QWS_MOUSE_PROTO=linuxtp:/dev/h3600_tsraw。

2、使用tslib方法;
(1)编译TSLIB1.3:
     进行如下操作
#./autogen.sh  #生成configure文件
CC= $ARM_TOOL_PATH/arm-linux-gcc
CXX= $ARM_TOOL_PATH/arm-linux-g++
./configure        --host=arm-linux --target=arm-linux --disable-inputapi --prefix=$PWD/build
make
make install
        将build的整个目录拷贝到目标机,然后在目标机做如下设定,修改/etc/profile文件,在其中加入以下环境变量的设置
export V_ROOT=/xxx/xxx/build  #目标机上build所在的路径
#设定类型为H3600,其主要是对着tslib中的设备结构体定义,该定义要与触摸屏驱动中的一致
export TSLIB_TSEVENTTYPE=H3600
#设定控制台设备为none,否则默认为/dev/tty。在tslib1.3源码中,只要不是none,它就会打开$ (TSLIB_CONSOLEDEVICE)1,默认的为/dev/tty1的设备,然后从中读取console的可用设置。这样可以避免出现“open consoledevice: No such file or directory KDSETMODE: Bad file descriptor”的错误
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0  #指定帧缓冲设备
export TSLIB_TSDEVICE=/dev/touchscreen/0raw  #指定触摸屏设备节点文件
export TSLIB_CALIBFILE=$V_ROOT/etc/pointercal  #指定触摸屏校准文件pintercal的存放位置
export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf  #指定TSLIB配置文件的位置
export TSLIB_PLUGINDIR=$V_ROOT/share/ts/plugins  #指定触摸屏插件所在路径

(2)编译TSLIB1.4(TSLIB07072006)
进行如下操作:
echo "ac_cv_func_malloc_0_nonnull=yes" > tslib/arm-linux.autogen   #为了防止出现undefined reference to `rpl_malloc' 错误
CONFIG_SITE=arm-linux.autogen ./configure CC=arm-linux-gcc CXX=arm-linux-g++ --host=arm-s3c2410-linux-gnu --target=arm-s3c2410-linux-gnu --disable-input --disable-arctic2 --disable-mk712 --disable-collie --disable-corgi --disable-ucb1x00 --disable-linear-h2200 --with-gnu-ld --prefix=$PWD/build
make
make install
将build的整个目录拷贝到目标机,然后在目标机做如下设定,修改/etc/profile文件,在其中加入以下环境变量的设置。其解释类上,不同于 TSLIB1.3的是,TLIB1.4通过配置文件ts.conf中module_raw h3600语句来加载对应的设备结构体定义。已废除了TSLIB_TSEVENTTYPE宏。
export V_ROOT=/xxx/xxx/build 
export TSLIB_TSDEVICE=/dev/touchscreen/0raw
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$V_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
       一个值得注意的问题是:TSLIB1.4在ts_config函数中通过while((p=fgets(buf,BUFF_SIZE,f))!= NULL)来加载ts.conf中的语句,而buf只有512byte。所以对于ts.conf没有用的定义语句,请将其删除,以防止误发生段错误。

(3)以TSLIB库为基础,编译QTE。
       -- QTE2.3.10直接支持-tslib选项开关的应用。不用修改任何文件。可以通过网上所说的拷贝tslib.h头文件及库文件到QTE相关目录来进行编译(对于tslib1.4,还要拷贝tslib_private.h)。也可以在./configure进指定-L<path to tslib library> -I<path to tslib header>来防止出现找不到相应库文件的错误。(对于tslib1.4,应该还加上-lts选项)。
       --  对于其它版本的QTE,可以通过在QTE文件夹路径下执行grep -lir 'tslib' *来查看是否有对tslib的支持,如果没有则需要对源码进行相应的修改。(onebyte注:虽然网上说有补丁可下,但俺一直没找到相关的patch,但看看QTE2.3.10的源码后再做相应的修改还算比较方便:)

 在这里特将这些方法记载下来,送给同我一样经历过困惑的朋友们:P


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门