微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 基于Qt/Embedded的物流信息终端导航定位功能设计

基于Qt/Embedded的物流信息终端导航定位功能设计

时间:07-28 来源:互联网 点击:
Qt/E编程

本文采用Qt/Embedded 3.3.4版本,主要是考虑到Qt/E 3.3版本相对以往版本更成熟,可视化编程相对更方便易用,且其支持SQLITE数据库驱动,便于数据库操作与编程。在本设计中主要使用了Qt/E的画布模块、SQL模块、网络模块及多线程编程,缩短了程序的开发周期,提高了开发效率。下面主要就多线程编程和画布模块编程进行讨论。

多线程编程

通常情况下图形用户界面应用程序有一个执行线程并且每次执行一个操作。如果用户在单线程的应用程序中从用户界面中调用一个耗时的操作,当这个操作被执行的时候,用户界面通常会被冻结。本实现使用QThread子类化得到QGPSThread类,并使用QMutex、QSemphore和QWaitCondition来同步各线程。QGPSThread类用于通过串口编程接收GPS模块的$GPRMC定位数据帧,并加以解析,得到实时的经纬度等定位信息,供其它线程使用。

画布模块

画布模块中QCanvas库是一个高度优化的二维绘图库,QCanvas可以包含很多任意图形的项并且在内部使用双缓冲来避免闪烁,而且QCanvas支持分层,适合数字地图的分层显示。QCanvas与其它画布模块结合使用,能很方便地实现导航地图的显示、缩放、漫游以及鹰眼等功能。下面是导航地图常用操作的实现代码。

void Form2::zoomin() //缩小地图比例
{
QWMatrix m = mapview->worldMatrix();
m.scale( 0.5, 0.5 );
mapview->setWorldMatrix( m );
}
void Form2::movleft() //地图向左漫游
{
mapview->scrollBy(-10,0);
}
void Form2::centerpoint() //将当前定位点居于显示地图正中
{
mapview->center (pointx,pointy);
}
void Form2::movleft() //定位点在地图上移动
{
i->move (pointx,pointy);
canvas->update();
}

初步实现

嵌入式信息终端平台定位功能的初步实现如图2所示,该系统人机界面友好,定位精确。定位误差主要取决于GPS-OEM模块的定位精度,实验显示,本系统能初步满足物流信息终端对定位功能的需求。  

  
图2 嵌入式信息终端平台定位功能的初步实现  

结语

本文提出了一种嵌入式物流信息化终端定位功能的实现方案,并利用Qt/E编程对其进行了初步实现。实验结果证明,系统定位数据精确、界面友好、系统可扩展性强,较好地完成了物流信息化终端定位功能。■

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top