各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
就是一个用qt写的界面,想在板子启动的时候跟着一起启动。最后在rc.local中添加启动脚本,在exec /……/qpe -qws 后面添加了sleep 30和exec /……/test, 终于可以在qpe启动之后运行我自己的界面了,能够正常操作。 但是我并不需要qpe桌面,于是我就把exec /……/qpe -qws 换成了exec /……/test -qws,也就是说我不启动qpe。好了,全屏了,但是触摸屏根本就没反应!!!! 终端提示Cannot open /dev/h3600_ts (No such file or directory),但是这个时候我cat /dev/touchscreen/0,之后点击触摸屏,仍然有数据传给终端,只不过我的界面似乎对点击无动于衷。。。。然后我把后面的-qws去掉,就 连界面也显示不出来了。 现在我有一个问题很不明白:qpe启动之后是不是会开启一些特别的服务??是不是必须要启动qpe然后才能使用触摸屏??然后界面基于此才能使用?? 查资料都查烦了,也没什么结果,期待大侠指点迷津!!
|
tpu (old hand) 08-08-03 03:16 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
那个,你检查一下,是否正确设置了QT需要的环境变量。
|
hahagaga (stranger) 08-08-04 13:08 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
我试试先。。。
|
DaviesCai (journeyman) 08-08-04 13:24 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
把exec /……/test -qws放在最后执行,最好放在profle最后面执行
|
hahagaga (stranger) 08-08-04 13:33 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
这个已经试过了:我把exec /……/qpe -qws 换成了exec /……/test -qws,那么test其实实在profile执行后运行的,结果就是界面能够显示出来,但是对触摸屏点击没有反应。或许真的是环境设置的问题。。。。
|
DaviesCai (journeyman) 08-08-04 13:42 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
在执行之前加 ln -s /dev/touchscreen/0 /dev/h3600_ts export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts
|
hahagaga (stranger) 08-08-04 14:54 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
似乎还是不行,界面对触摸屏依然没有反应。。。 还是提示Cannot open /dev/h3600_ts (No such file or directory) 我把相关的脚本贴出来,请大侠帮我分析一下!我的水平目前还看不出问题出在哪里。。。。。 rc.local: #!/bin/bash . /usr/etc/profile ###文件内容附后 /sbin/ifconfig lo 127.0.0.1 up /sbin/ifconfig eth0 192.168.2.223 netmask 255.255.255.0 up /bin/route add default gw 192.168.2.1 eth0 /sbin/inetd /usr/sbin/makelinks source /.bashrc ###文件内容附后 /bin/cp -rf /Qtopia/qtopia-free-1.7.0/wjluv/* /tmp/ /bin/boa -c /home/httpd /bin/mkdir /tmp/udisk /bin/mkdir /tmp/images /bin/mkdir /tmp/flashdisk /bin/mkdir /tmp/sdcard /bin/mkdir /tmp/mplayer /bin/mount -t vfat /dev/nfblock/3 /tmp/flashdisk/ /bin/mount -t vfat /dev/nfblock/2 /tmp/mplayer/ if test -e "/tmp/flashdisk/userconfig"; then /bin/chmod u+x /tmp/flashdisk/userconfig . /tmp/flashdisk/userconfig fi ###下面是我自己加的 ln -s /dev/touchscreen/0 /dev/h3600_ts sleep 10s export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts exec /Qtopia/qtopia-free-1.7.0/bin/test -qws rc.local中提到的/usr/etc/profile: #!/bin/bash DISPLAY=unix:0.0 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin LD_LIBRARY_PATH=/lib:/usr/lib:/Qtopia/qt-2.3.2/lib #QWS_KEYBOARD=TTY LANG=C HOME=/tmp KMOD=/lib/modules/2.4.19-rmk4-pxa2 export PATH LD_LIBRARY_PATH QTDIR LINUETTEDIR QWS_KEYBOARD LANG HOME DISPLAY KDEDIR KMOD rc.local中提到的/.bashrc: # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc ###文件内容附后 fi export DISPLAY=:0.0 export HOME=/tmp ln -s /dev/touchscreen/0raw /dev/touchscreen/0 export IMGDIR="/Qtopia/demo" export QPEDIR="/Qtopia/qtopia-free-1.7.0" export QTDIR="/Qtopia/qt-2.3.7" export QTEDIR="/Qtopia/qt-2.3.7" export KDEDIR="/Qtopia/konqueror" export PATH=$QPEDIR/bin:$IMGDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$IMGDIR/lib:$QPEDIR/lib /.bashrc中提到的/etc/bashrc: # /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # by default, we want this to get set. # Even for non-interactive, non-login shells. if [ "`id -gn`" = "`id -un`" -a `id -u` -gt 99 ]; then umask 002 else umask 022 fi # are we an interactive shell? if [ "$PS1" ]; then if [ -x /usr/bin/tput ]; then if [ "x`tput kbs`" != "x" ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` elif [ -x /usr/bin/wc ]; then if [ "`tput kbs|wc -c `" -gt 0 ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` fi fi fi case $TERM in xterm*) if [ -e /etc/sysconfig/bash-prompt-xterm ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm else PROMPT_COMMAND='echo -ne "/033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}/007"' fi ;; screen) if [ -e /etc/sysconfig/bash-prompt-screen ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen else PROMPT_COMMAND='echo -ne "/033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}/033//"' fi ;; *) [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default ;; esac # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "//s-//v///$ " ] && PS1="[/u@/h /W]//$ " if [ "x$SHLVL" != "x1" ]; then # We're not a login shell for i in /etc/profile.d/*.sh; do if [ -r "$i" ]; then . $i fi done fi fi # vim:ts=4:sw=4
|
DaviesCai (journeyman) 08-08-04 16:29 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
ln -s /dev/touchscreen/0raw /dev/h3600_ts sleep 10s export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts exec /Qtopia/qtopia-free-1.7.0/bin/test -qws 注意/usr/etc/profile 与 /etc/profile是不同的
|
hahagaga (stranger) 08-08-04 17:35 |
Re: 各位大侠,程序自启动问题,试了很多方法,都可耻地失败老。。。。 | |
多谢DaviesCai不断的指导!!解决了! 原来是/.bashrc中的ln -s /dev/touchscreen/0raw /dev/touchscreen/0这一句错了!!!!! 应该是ln -s /dev/touchscreen/0 /dev/touchscreen/0raw 改正过来后,再在rc.local中添加 ln -s /dev/touchscreen/0 /dev/h3600_ts sleep 10s export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts exec /Qtopia/qtopia-free-1.7.0/bin/test -qws 就可以了。 另外,我的开发板/etc目录下没有profile文件,确实使用的是/usr/etc下的profile 看它给的inittab就能够看出来: inittab的内容: # This is run first except when booting ::sysinit:/etc/init.d/rcS # Start an "askfirst" shell on the console #::askfirst:-/bin/bash ::askfirst:/bin/bash # Stuff to do when restarting the init process ::restart:/sbin/init #::once:/sbin/raja.sh #::respawn:/sbin/iom ::once:/usr/etc/rc.local # Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r 我还有一些疑问: 我起初export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0 为什么就不行??? 另外,很多人写export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts 这一句的时候, 会加一对引号,比如: export QWS_MOUSE_PROTO=“TPanel:/dev/h3600_ts”, 请问这个引号有什么作用呢??还有的人这样写: export set QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts, 加了set又是什么作用呢?? 还有就是: export QWS_MOUSE_PROTO=USB:/dev/h3600_ts 这个和export QWS_MOUSE_PROTO=TPanel:/dev/h3600_ts 有什么不同呢?? 问的问题比较多,有点得寸进尺,希望DaviesCai不要介意哈^_^ |