、
[if !supportLists]1. [endif]遇到的问题及解决方法
1、一开始按照实验指导光盘A里面发现有数十个友善之臂公司编译好的二进制包,用户手册也没有说明哪些压缩包是开发所必须的。我们一开始先把所有的安装包解压了一遍,根据Qt Creator 开发工具中的配置,发现怎么构建都生成不了可执行文件。最后发现原因是qmake我们也没有写到环境变量里面。解决的办法是重新上网搞明白每一步解压的用途,例如安装完qmake检查一下qmake -version,发现是我们的qmake没有写到环境变量里面,所以qt构建不了项目。
在反复尝试中我们总结出target-qte-4.8.5-to-hostpc.tgz是完成qmake相关库文件的引用,另一个是安装包是完成gcc/g++等编译环境的配置,配置完成之后也要记得确认检查arm-linux-gcc -v的版本,看软件是否安装好。
完成了基本环境的配置,我们采用的开发方式是,在qt里面生成.pro工程文件,使用qmake生成makefile,然后make。
具体方法是:我们将qmake的路径“/usr/local/Trolltech/Qt-embedded-4.8.5/bin/qmake”存到txt文件里面,把要运行到板子上的可执行qt文件放到/root,chmod +x 文件名或者chmod +777 文件名使得文件获得可执行权限,cd /bin,vi qt4,修改vi文件里面你要执行的文件名,然后 ::wq退出vi编辑器,然后 teminal输入qt4 ./文件名
2、在板子上运行生成的可执行文件时候,会报错“error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory”,解决思路:先在目标机查看Makefile里面的交叉编译环境是否和开发板匹配,然后在开发板查看报错的lib文件是否存在。检查发现,原来开发板自带的环境变量里面不存在这个文件,修改开发板/bin 目录下的setqt4env文件,
[if !vml]
[endif]
图14 修改开发板/bin 目录下的setqt4env文件
将“export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH”修改为“export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/:”,lib目录下和/usr/local/lib的动态库的都是QT程序所需要的。
也可以直接将/opt/Qt4.8中的lib复制粘贴到/usr/local中即可。
3、使用cgi代码的时候,出现 “400
Bad Request
Your client has issued
a malformed or illegal request.
”或者“502 Bad
Gateway
The CGI was not CGI/1.1
compliant.”错误,报错“Invalid Content-Length [0] on POS”等,使用cgi返回的json做前后端分离,如果点击某button之后没有返回值,会提示错误。
4、使用网页、qt和数据库进行交互的时候发现,带有“sqlite3.h”的c代码只能在Linux
gcc的环境下编译成可执行文件,arm-linux-gcc编译的时候会报错。
这时候可以把/usr/local/Trolltech/Qt-embedded-4.8.5/lib里面的[if !vml]
[endif]文件拷贝到工程目录下,修改生成的工程的makefile为“LIBS = $(SUBLIBS) -L/usr/locasl/Trolltech/Qt-embedded-4.8.5/lib -L./ -lsqlite3”,编译简单的c、cpp程序也可以直接调用arm-linux-gcc加上相应依赖库所依赖的路径。
5、连接不上开发板,检查端口是否连接上了,连接软件上的com口代号是否和pc机插串口的代号一样。若连接上依然出现乱码的情况,
[if !vml]
[endif][if !vml]
[endif]
图14 pc显示端口乱码
拔掉重插就行。
[if !supportLists]1. [endif]设计总结及设计心得
其实从选题开始,我们小组内的同学都有许多不同的想法的,我们三个人在群里展开了激烈的讨论,究竟是用开发板mini210还是用实验箱,用什么样的开发模型,最后我上知网、百度文库查看了相关的论文,在群里清晰地说出了我的设计想法并说服同组成员采用了我的选题方案。最后在小组成员的努力下,反复讨论之后确定了开发的软件模块以及硬件设计。在开发的过程中,我们有过懊悔烦恼,最终克服了重重困难完成了无线WiFi点菜器的实现。
在解决问题的过程中,我更加理解了免安装软件的使用方法,以前在Windows环境下安装软件我总是选择可执行安装方法,现在发现在Linux使用免安装软件.tar .gz 之类的的使用起来其实很方便。
在配置环境的过程中,我也有过一些怀疑,我做的这些工作是否是有意义的呢,换一块换一种类型的开发板,我是否还能借用本次开发的经验呢?
答案是肯定的,我们只需将我们本次开发的代码保存下来,换下一种开发板的时候修改一下按钮与屏幕的大小,交叉编译就可以了,编程开发的通用性在嵌入式开发的过程也是可以做到的。我们还可以将在本次开发过程中我们将组内遇到的问题记录下来,汇集成解决方案之后,也传到我们曾经借鉴经验的“qt中文论坛”、“qt开源社区”,我们在提高项目开发经验、总结经验的同时也能够帮助更多的人。
我更加理解了sqlite数据库的本质其实很像一个文件,也学会了将一个个的.c或者cpp文件文件使用Qt
Creator读取头文件、源文件等之后组织成一个工程,也可以像学习Java 源码那样在qt的环境里面阅读sqlite3.h的源码,也更加理解了qt的跨平台性,在搭环境的过程里也不断查资料理解了“Qt、Qte、Qtopia三者的区别”
我个人认为,在这次的嵌入式课程设计中,我学会了不少创新的办法以及课本上学不到的动手实践的经验,例如使用xshell 6来通过串口的方式或者ssh的方式来向开发板传输数据。
在问题解决不出来的时候,感谢队友的支持与鼓励老师的指导。
中期验收老师提问:
1、该开发板屏幕是电容屏还是电阻屏?
答:该开发版是采用了一线精准触摸驱动的电容触摸屏。
2、Linux内核版本是多少?
答:使用cat /proc /version 命令可以直接查看嵌入式开发板版本号。
[root@FriendlyARM /root]# cat /proc/version
Linux version 3.0.8-FriendlyARM (root@jensen) (gcc
version 4.5.1 (ctng-1.8.1-FA) ) #1 PREEMPT Wed Apr 11 14:16:31 HKT 2018
3、使用vi编辑器时的保存退出脚本怎么写?
答:保存退出 “:wq”,不保存退出“:q!”。
4、网页服务器是什么版本 ?是否支持php?
答:BOA,不支持php,但是该开发板支持无需编译的可以访问硬件的python,可以支持cgi,也可以用Python调用C/C++等。
结题验收:
点菜无法实时显示在管理网页上、点菜信息无法以文字形式输出。
解决思路:开始我们使用cgi编译的网页代码遇到了各种问题,解决起来也比较费劲,网页遇到每一个乱码的情况都需要定义字符串的数据格式为“utf8”。如果考虑使用我的旧有的cgi代码,可以将原来的C语言代码编译成动态库,在python web的界面调用.so文件
可以考虑使用python web 将网页的数据直接写入数据库,也可以直接将数据库数据库的数据读取到网页。
网友评论