五、总结" />
当前位置: 代码迷 >> QT开发 >> 五、总结
  详细解决方案

五、总结

热度:71   发布时间:2016-04-25 04:42:12.0
Qt开发串口通信以及坐标显示程序并移植

  毕业了,整理下思绪,把我之前在实验室弄的一个Qt终端界面开发的程序的整体思路以及源代码共享开来,以便于更好地让Qt为人所知,为开源贡献点我的微薄之力。

一. 项目介绍

  项目背景的简要介绍:通过串口从数据采集板传输数据到终端板上面,自行设计一个界面用来显示收集到的数据,以及画出所对应的坐标点。终端显示界面的板子是基于S3C6410芯片的,板子是师兄根据Mini6410开发板电路图画出来的,做了部分裁剪。

  由于考虑到跨平台以及移植性问题,我选择了Qt进行开发,分别开发了Windows以及Linux版本,并且移植到开发板上面。以下截图1,图2所示:

             

                                       图1 Windows版本                                                                                                   图2 Linux版本

  编写控制Qt串口通信终端界面时候,串口通信部分是参考yafeilinux的串口通信教程:http://blog.csdn.net/yafeilinux/article/details/4717706  Windows, Linux需要相应改写第三方类,yafeilinux里面已经有介绍。由于我要用的poll查询机制,利用settime(sec),因此更改了"*_qextserialport.cpp"文件里面的对应函数,如下图3所示:

图3  修改*_qextserialport.cpp文件

  下图3是Windows下的项目文件截图:


图3  Windows下项目源文件

二. Windows平台编写过程

  整个项目我是利用QT的designer和手写代码互相配合完成的。新建了一个带有ui的项目以后,添加第三方串口类源文件。在ui里面画出相应的东西,我是用了tabWidget来切换几个界面,在主界面中还用了tableView表格来显示各个参数,如上图1所示,对应的源程序代码如下。

  头文件mainwindow.h,定义声明了各种类和变量。


  mainwindow.cpp文件,具体实现各个子函数的功能。


  coordinate.cpp文件中,由于我是在tabWidget里面绘图的,不能直接调用QPainter类,相应的解决方法有两种:方法(1): 在子窗口ui.---派生一个类,在PaintEvent里画图。 我所遇到的问题:不清楚自己构造的派生类如何跟ui.---相关联起来,归根到底就是自己C++使用得不熟悉。方法(2):事件过滤法。给ui.---安装事件监视器,在QEvent::paint事件时QPainter paint(ui->---)画图。我使用的是第二种方法。

  坐标图显示如下图4所示,由于在QT里面慢慢画直线、弧线等各种坐标点很麻烦,工作量大,因此我就确定好尺寸后,用PS自己弄了背景图片,计算好相应的坐标点,直接在上面显示目标点。


图4  坐标图显示



  main.cpp文件


三、Linux版本

  我是在Fedora9 里面进行Linux版本的编写的,只需把相应的第三方类修改,相对应的定义也改掉,串口名称那里也要改,并添加前缀“/dev”,其他部分相同。

四、移植到Mini6410上面运行

  移植前需要修改下项目文件里ui的串口名称,改成ttySAC0, ttySAC1....之类的,然后在安装了交叉编译链,Qt4.7交叉编译环境后,在Qt里面选择对应的编译链进行编译,具体做法参见《Mini6410 Qt4和Qtopia编程开发指南》。

五、总结

  从接手项目任务到完成大概花了3个月时间,期间由于其他事情断断续续地编程,Qt知识是从零开始学习的,以及由于个人C++水平有限,编写的程序可能会不合理的地方,忘高手指导。通过完成此次的项目,我对于C++的学习又深入一步,以及学会了Qt这种跨平台的SDK。我会分别把Windows版本,Linux版本的源文件上传上来,供大家参考,互相学习。(备注:Linux版本的由于当初是直接在实验室弄好,跟今天修改的Windows版本略有不同,因为当初是为了考虑嵌入式开发板的屏幕小,把选择串口参数部分去掉,直接在程序里面默认设定好了,需要修改的同学直接在里面修改即可。)
Windows版本:http://download.csdn.net/detail/jjzhoujun2010/4393863
Linux版本:http://download.csdn.net/detail/jjzhoujun2010/4393867

Mini6410 Qt4和Qtopia编程开发指南》:http://download.csdn.net/detail/jjzhoujun2010/4393908

原创文章,欢迎转载,转载请注明:blog.csdn.net/jjzhoujun2010

作者:Dream Fly



  相关解决方案