• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 弱弱的问一个关于触摸屏驱动的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 364
精华: 0
发帖: 9
金钱: 90 两
威望: 9 点
综合积分: 18 分
注册时间: 2008-03-23
最后登录: 2009-07-06
楼主  发表于: 2008-03-23 16:18

 弱弱的问一个关于触摸屏驱动的问题

            小弟是个初学者,遇到个麻烦。文件系统烧的是支持触摸屏的,跑QT的时候,触摸屏可以用,把QT关了之后,再跑kpone4.2的时候,触摸屏就不能正常工作了啊?上网上也找不到相关的资料,请求斑竹说下解决办法!小弟不胜感激!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2008-03-23 17:58
触摸屏的驱动是包含在Linux内核里的,与GUI系统通过/dev/input/touchscreenX或/dev/input/eventX接口,不管上面用的是QT还是上面别的GUI系统,应该都可以工作,我不清楚你说的kpone4.2是什么,不过我建议你先了解一下它是否能支持/dev/input/touchscreenX或/dev/input/eventX接口的触摸屏。
[ 此贴被kasim在2008-03-23 18:05重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 364
精华: 0
发帖: 9
金钱: 90 两
威望: 9 点
综合积分: 18 分
注册时间: 2008-03-23
最后登录: 2009-07-06
2楼  发表于: 2008-03-23 18:46
少打个字母。。。kphone4.2```VOIP软件``为触摸屏在QT可以工作```但是当把QT关了之后`再运行kphone就发现触摸屏不能用了```
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2008-03-23 19:18
可能我没说清楚,QT下触摸屏可以工作是因为QT环境下有看守进程会通过/dev/input/touchscreenX或/dev/input/eventX这样的设备文件接口去读取触摸屏的位置坐标数据,如果你希望在没有QT的情况下触摸屏也能工作,那必须有别的程序去完成那样的事情.
另外,我觉得奇怪的是,据我所知,kphone是基于QT的应用程序,似乎没有必要要在'关掉'QT的情况下去运行吧,能否解释一下你所说的‘关掉’QT是什么意思?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 364
精华: 0
发帖: 9
金钱: 90 两
威望: 9 点
综合积分: 18 分
注册时间: 2008-03-23
最后登录: 2009-07-06
4楼  发表于: 2008-03-24 20:21
今天我弄了一下,先把大致的问题说下。当开发板通上电之后,我把开机自动运行的qtopia杀掉了,然后设置好环境变量,运行kphone之后,能正常进入到kphone的界面,触摸屏能用,但工作不正常,当我点击触摸屏向上移动的时候,里面界面对应的鼠标指针却向相反的方向移动,不灵敏,而且点击屏幕的位置和界面里面的鼠标指针有明显的偏差。和我前两天在扳子上运行的测试程序一样,测试程序是用脚本运行的。脚本里面有个声明变量的语句是
export QWS_MOUSE_PORTO="USB:/dev/input/mouse0"
当我把这句在脚本中屏蔽掉之后,发现可以正常使用触摸屏,但是屏幕上没有鼠标的那个箭头,如果不屏蔽掉,就会出现我上面说的情况。
而当kphone运行的时候,终端的回显是
crearting mouse:auto

不知道kphone触摸屏不正常工作是不是很这有关系。

然后我请教一个朋友,他说qq2440上面的QT库的版本比较老,而kphone里面的QT库比较新,所以出现这种情况,但怎么解决他说他也不清楚,我用的kphone是他编译好的。我直接拿来用的,所以有很多都不清楚。网上也查不到相关的资料。还请斑竹帮着解答一下。
[ 此贴被udsking在2008-03-24 21:41重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2008-03-25 09:23
理论上来讲,如果友善之臂提供的信息没错的话,你可以用类似在板上单独运行helloworld的方法单独运行kphone, 即
export set HOME=/root
export set QTDIR=/opt/qt
export set QPEDIR=/opt/qtopia
export set QWS_KEYBOARD="USB:/dev/input/event1"
export set QWS_MOUSE_PROTO="USB:/dev/input/mouse0"
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib
$QPEDIR/bin/hello –qws

但我不理解你为什么要用这种standalone的方法运行它,qtopia环境下的qpe(我想就是被你干掉的那个)作为一个server看守进程,可以为其他appplication提供输入设备的信息,如鼠标,键盘,你完全可以按照手册附录3.3节的步骤从qpe的桌面上运行kphone。

另外,我建议你尽量用板上的qtopia的sdk编译kphone,编译时和运行时的lib不同可能会带来一些无法预知的问题。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 364
精华: 0
发帖: 9
金钱: 90 两
威望: 9 点
综合积分: 18 分
注册时间: 2008-03-23
最后登录: 2009-07-06
6楼  发表于: 2008-03-26 01:09
我想用QQ2440板子做一个voip的终端,开机自动运行kphone,所以就把开机自动运行的qtopia在启动文件rcS中删除了,我用的是qt-embedded-free3.x的版本编译的kphone,没用板子上自带的,运行的时候kphone正常启动,今天我试验了一下用脚本,就是
export set QWS_MOUSE_PROTO="USB:/dev/input/mouse0"这句话,添加进去之后就发现终端回显提示说找到两个接口(以前是说creating mouse:auto),感觉好想是设备驱动文件没有连接上,然后点击触摸屏没有反应。我也上网上查找相关的驱动信息,说是在qt的qmouselinuxtp_qws.cpp文件中修改一下mouse的设备文件就可以了,我也按照方法做了,可是还是不行,我怀疑是不是板子的驱动文件出现了问题?但运行板子自带的qtopia,触摸屏是正常工作的,我用的触摸屏是nec3.5的。

同样的问题,在我们上一个项目小组做实战的时候也遇到过这种情况,当时也没有解决,最后用BOA做了个WEB页来对kphone进行设置和操作。

我想问一下这是什么原因?能用什么办法来解决呢?还麻烦版主细心帮解答下!小弟不胜感激!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2008-03-26 10:11
这个问题是由于将kphone作为qtopia环境下的server进程运行时,对于input设备的配置不正确造成的。
下面问题的描述是基于假设你用的是支持触摸屏的文件系统root_qtopia_tp.img, 红色粗体字是我加的注释

原来的server进程qpe通过/etc/init.d/rcS来启动
---------------------------  /etc/init.d/rcS ----------------------------------
#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
#      Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/sbin/hwclock -s

#SCSI modules

#Charactor modules

/bin/mknod /dev/pts/0 c 136 0
/bin/ln -s /dev/v4l/video0 /dev/video0
/bin/ln -s /dev/fb/0 /dev/fb0
/bin/ln -s /dev/vc/0 /dev/tty1
/bin/ln -s /dev/sound/dsp /dev/dsp
/bin/ln -s /dev/sound/mixer /dev/mixer
/bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1
ln -s /dev/input/tsraw0 /dev/h3600_tsraw --------------------> for libqte.so

/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var

/bin/mkdir -p /var/lib
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log

/etc/rc.d/init.d/netd start
echo "                        " > /dev/vc/0
echo "Starting networking..." > /dev/vc/0
usleep 300000
/etc/rc.d/init.d/httpd start
echo "                        " > /dev/vc/0
echo "Starting web server..." > /dev/vc/0
usleep 300000
/etc/rc.d/init.d/leds start
echo "                        " > /dev/vc/0
echo "Starting leds service..." > /dev/vc/0
echo "                        "
usleep 300000

/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.1.230 up

/bin/qtopia &   -------------------> launch qpe via /bin/qtopia
echo "                                  " > /dev/vc/0
echo "Starting Qtopia, please waiting..." > /dev/vc/0

/bin/hostname -F /etc/sysconfig/HOSTNAME
------------------------------ end of /etc/init.d/rcS -------------------------------------------

/bin/qtopia的脚本如下
---------------------- /bin/qtopia --------------------------
#!/bin/sh

export set HOME=/root
export set QTDIR=/opt/qt
export set QPEDIR=/opt/qtopia
export set KDEDIR=/opt/kde
export set QWS_KEYBOARD="USB:/dev/input/event1"
export set QWS_MOUSE_PROTO="TPanel:/dev/touchscreen/0"  ----> use /dev/touchsceen/0 as mice device
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib
$QPEDIR/bin/qpe  ----------------> launch qpe as server process
--------------------- end of /bin/qtopia ----------------------

而你所需要的就是用kphone代替qpe作为server进程,所以替换掉脚本里launch qpe的部分就可以了,这样可以保证kphone使用原来正确的输入设备配置
[ 此贴被kasim在2008-03-26 10:31重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 364
精华: 0
发帖: 9
金钱: 90 两
威望: 9 点
综合积分: 18 分
注册时间: 2008-03-23
最后登录: 2009-07-06
8楼  发表于: 2008-03-27 12:24
LD_LIBRARY_PATH在这个后面加了几个库的路径$QPEDIR/bin/qpe  把这个改成kphone的运行路径,运行这个脚本还是出现同样的错误,怎么解决?谢谢!!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2008-03-27 13:51
原来脚本里除了最后调用qpe的部分别的都不用改,不是吗?/bin/qtopia原来是怎么被init进程调用的现在也怎么调用,不需要手动去运行。

我再说一遍,解决这个问题的方法在于确保kphone单独运行时对qtopia的配置,包括输入设备,库的路径与原先跑qpe时一致,我上面所说的是其中一个比较简单的方法,保证系统的变动最小。至于你需要如何修改脚本,要根据你实际用的文件系统,即你现在所用的文件系统原先是如何调用gpe的
[ 此贴被kasim在2008-03-27 16:48重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go