【Linux开发】【Qt开发】嵌入式Qt程序使用触屏或USB鼠标方式

178 篇文章 37 订阅 ¥39.90 ¥99.00
87 篇文章 10 订阅
上文 《嵌入式Qt开发-移植到ARM开发板 》 介绍了Qt程序的移植,本文再说下如何使开发板Qt程序使用触摸屏或USB方式进行交互。

之前刚把一个qt程序移植到arm板上成功运行显示时就开心的要死(Linux用了很久,但从未搞过Qt界面开发),嘿嘿~,但是插上鼠标尝试点个按钮的时候就心碎了,鼠标不能动(开来当时真的吧linux当做xp使用了),然后又试了下触摸屏,也不行!!卧槽,对于我这种从未搞过这个的小牛来说真的无助了,傍边也没个人问,那就自己满网络搜索了。最后也是下载了天嵌的一些资料才让我有了点思路。现做如下总结。
--------------------------------
首先说明一点,如果你有tq-2440板子,那么关于嵌入式qt程序开发及移植方法只要利用好

如果单单只想移植tslib触屏驱动,直接参见 《TQ-2440触摸屏tslib驱动移植 》即可。
下面简单说明下如何在tq-2440板子上运行qt程序时正常使用触摸屏或usb鼠标进行交互操作。

Qt使用触屏或USB鼠标
首先必须保证已具备以下条件:
1)还是假设已经变编译了并能保证能在开发板上运行的qt界面程序"hello"(不会编译的回头看下 《嵌入式Qt开发-移植到ARM开发板 》吧)。假设hello程序移植到开发板"/opt/qt-4.5/bin/"下。
2)已经成功qt移植到开发板。假设“/opt/EmbedSky/qt-4.5/__install/arm/”目录下的“lib/”目录移植到开发板的“/opt/qt-4.5/”目录下(删掉 除去“fonts/”目录和“*.so*”文件外的其他文件),“/opt/EmbedSky/qt-4.5/__install/arm/”下的“plugins/imageformats/”目录移植到开发板的“/opt/qt-4.5/”目录下。
3)及已编译好的tslib触屏驱动(参考 《TQ-2440触摸屏tslib驱动移植 》)。
4)已成功移植tslib到开发板。假设tslib的bin下面的所有文件移植到开发板中的/sbin中,tslib的etc下面的ts.conf移植到开发板中的/etc中,tslib的lib下面的所有库文件移植到开发板的/lib下。

tslib已经有了,要使用触摸屏无非就是设置开发板linux环境变量,这方面在 《TQ-2440触摸屏tslib驱动移植 》已经有所提及,比较提倡的做法就是写一个专门配置并运行hello程序的脚本。

1、 在开发板/bin目录下新建一个qt4文件,然后输入以下内容:

#!/bin/sh echo Start Qt-4.5 > /dev/console export set HOME=/root export set QTDIR=/opt/qt-4.5 export set QPEDIR=/opt/qt-4.5 export set QWS_DISPLAY="LinuxFB:/dev/fb0" export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0" export set QWS_KEYBOARD="TTY:/dev/tty1" if [ -f /sys/devices/virtual/input/input1/uevent ] ; then export set TSLIB_TSDEVICE=/dev/event1 export set TSLIB_CALIBFILE=/etc/pointercal export set TSLIB_CONFFILE=/etc/ts.conf export set TSLIB_PLUGINDIR=/lib/ts export set QWS_MOUSE_PROTO="TSLIB:/dev/event1 Intellimouse:/dev/mouse0" else

export set QWS_MOUSE_PROTO="Intellimouse:/dev/mouse0" if [ -f /etc/pointercal ] ; then echo only use mouse > console else echo "1 0 1 0 1 1 65536" >/etc/pointercal fi fi

export set QT_PLUGIN_PATH=$QTDIR/plugins/ export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/ export set PATH=$QPEDIR/bin:$PATH export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH if [ -f /etc/pointercal ] ; then $QPEDIR/bin/hello -qws 1>/dev/null 2>/dev/null else ts_calibrate # mousecalibration $QPEDIR/bin/hello -qws 1>/dev/null 2>/dev/null fi

关于各变量解释详见《TQ-2440触摸屏tslib驱动移植 》

其中:
export set QTDIR =/opt/qt-4.5
export set QPEDIR =/opt/qt-4.5
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH
用于指定移植过后qt文件所在路径。

其他的都是用于指定触屏或usb鼠标交互方式:

if [ -f /sys/devices/virtual/input/input1/uevent ] ; then export set TSLIB_TSDEVICE=/dev/event1 export set TSLIB_CALIBFILE=/etc/pointercal export set TSLIB_CONFFILE=/etc/ts.conf export set TSLIB_PLUGINDIR=/lib/ts export set QWS_MOUSE_PROTO="TSLIB:/dev/event1 Intellimouse:/dev/mouse0" else export set QWS_MOUSE_PROTO="Intellimouse:/dev/mouse0" if [ -f /etc/pointercal ] ; then echo only use mouse > console else echo "1 0 1 0 1 1 65536" >/etc/pointercal fi fi

if中判断触屏是否存在并可用,以确定是否设置触屏方式,如果存在则设置成触屏、鼠标共存方式:
export set QWS_MOUSE_PROTO="TSLIB:/dev/event1 Intellimouse:/dev/mouse0"
若触屏不可用(或不存在)则仅使用鼠标方式:
export set QWS_MOUSE_PROTO="Intellimouse:/dev/mouse0"
--------

if [ -f /etc/pointercal ] ; then $QPEDIR/bin/hello -qws 1>/dev/null 2>/dev/null else ts_calibrate # mousecalibration $QPEDIR/bin/hello -qws 1>/dev/null 2>/dev/null fi

这里是判断是否需要对触屏进行校准,主要是判断校准后的数据文件( /etc/pointercal)是否存在,如果此文件存在则说明已经校准,这是无需再校准,直接运行hello程序。如果不存在则说明还未校准,这时会先运行 ts_calibrate程序进行校准( mousecalibration也是一个Qt4自带的校准程序 ),然后再运行hello程序。

说明:这只是一种方式,还可以直接在开发板/etc/profile文件中设置这些环境变量,但是对比与这种脚本的方式明显没有优势。建议将每个移植的qt程序都写成脚本的方式运行。

2、 设置开机自启动
修改1中脚本qt4的属性为777(chmod 777 /bin/qt4).
修改系统文件“/etc/init.d/rcS”,加入以下内容:
-----------------------------------
qt4 &
-----------------------------------
嵌入式Qt程序使用触屏或USB鼠标方式 - dingmz_frc - dingmz_frc的博客

注意:这里需要说明一点,根据linux启动过程发现, /etc/init.d/rcS文件会在/etc/profile之前执行,所以,如果选择自启动的运行方式,那么qt及tslib环境变量的设置放在/etc/profile里面将不合适,这种情况下请使用本文中的脚本方式。

以上的设置仅对于当前arm开发板中的linux系统而言,如果此linux坏掉了,再重新烧写uboot,内核级文件系统之后这些移植文件及设置全部失效,这时需要打破为零从头再来,一种一劳永逸的方法就是设计自己的适合嵌入式qt开发的文件系统,这样每次重新烧写玩内核级文件系统好之后就可直接使用。一般的嵌入式qt开发都会 制作一个已移植qt及tslib的文件系统,关于文件系统制作详见 《天嵌科技出品-Linux移植之Step By Step.pdf》相关章节( Step11、构建文件系统)。
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值