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

发布者:快乐微笑最新更新时间:2012-04-05 来源: 21IC 关键字:Embedded  物流信息  终端导航  定位功能 手机看文章 扫描二维码
随时随地手机看文章

  Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平台开发工具,是Qt的嵌入式版本。由于KDE等项目均使用Qt作为支持库,所以许多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向对象、跨平台和界面设计方便美观等优点,已得到了广泛的应用。

  本文针对当前物流行业终端定位功能的需求,提出与之相适应的物流终端定位功能实现方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化终端平台上对终端定位功能进行了初步实现。

  软硬件系统设计原理

  基于现有网络建设的总体情况和物流配送过程中对定位数据的可靠性、连续覆盖性、精度的要求,并综合考虑各种定位技术的发展现状及技术成熟度、实现成本等因素,本系统在物流配送网络中采用了GPS辅助定位系统,即GPS+CellID+RFID+图形道路匹配相结合的定位技术。

  系统的软硬件功能框图如图1所示,开发板CPU采用的是三星公司的S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32 位微控制器。GPS模块利用RS232接口与开发板通信,提供卫星定位信号;GSM/GPRS模块提供通信以及CELLID定位信息获取;RFID模块提供标签信息采集和RFID定位功能。终端通过GSM/GPRS通信网络与物流信息控制中心建立联系,提交相关数据采集信息和接收物流信息控制中心指令。

系统软

图1 系统软、硬件功能框图

  系统采用嵌入式Linux操作系统,移植Qt/Embedded 3.3.4和SQLITE数据库,采用Qt编程实现物流信息化终端定位功能。

  软件系统设计

  本文的软件系统设计主要以S3C2410平台为核心,通过RS-232串口从GPS模块、GSM/GPRS模块、RFID模块提取

定位信息,加以分析转换,并根据需要用于终端导航或通过GSM/GPRS网络提交给物流信息控制中心。  

  宿主机开发环境建立

  由于目标平台资源所限,需要搭建交叉编译环境,本系统开发过程中采用的平台如下:

  宿主机:RED HAT 9.0
Qt/X11 3.3.4
Qt/Embedded 3.3.4
SQLITE 2.8.16
cross-2.95.3.tar.bz2

  目标机:Linux Kernel 2.4.18
Qt/Embedded 3.3.4
SQLITE 2.8.16

  Qt/Embedded 3.3.4移植

  为了正确交叉编译Qt/Embedded,建议宿主机完全安装RED HAT 9.0,同时要确保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的头文件、库文件在交叉编译前正确安装,并移植相应的库文件至目标机中,此类文件的具体安装在此不再赘述。下面主要对Qt/Embedded 3.3.4的交叉编译及移植进行详细讨论。[page]

  下载解压源文件
$ cd ~
$ mkdir -p qt_embedded/
$ cd qt_embedded
$ wget ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.4.tar.bz2
$ wget ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.4.tar.bz2
$ tar jxf qt-x11-free-3.3.4.tar.bz2
$ tar jxf qt-embedded-free-3.3.4.tar.bz2
$ mkdir -p qt-embedded-free-3.3.4-target/
$ sudo cp -r qt-embedded-free-3.3.4/ qt-embedded-free-3.3.4-target/

  安装Qt/X11
$ cd qt-x11-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/ Qt-3.3.4/
$ make
$ sudo make install

安装Qt/E 3.3.4的宿主机版本

  为便于在宿主机上进行嵌入式程序开发,利用qvfb进行虚拟嵌入式LCD屏幕显示。

  $ cd ../qt-embedded-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/Qt-embedded-3.3.4-host -qvfb
$ make
$ sudo make install
$ sudo cp -r lib/fonts/ /usr/local/Qt-embedded-3.3.4-host/lib/

  安装Qt/E 3.3.4的目标机版本
$ cd ../qt-embedded-free-3.3.4-target
$ cp ../qt-x11-free-3.3.4/bin/uic bin/(注意:需拷贝uic工具的QT/X11版本至安装目录中)

  由于Qt/E3.3.4没有专门针对触摸屏的配置选项,为了确保触摸屏能正常工作,可以利用现有的配置选项进行修改,以满足实际需要。现利用qt-mouse-Linuxtp修改触摸屏驱动。

  修改src/embedded/qmouselinuxtp-qws.h,添加下面两行:
#

define Qt_QWS_IPAQ
#define Qt_QWS_IPAQ_RAW

  修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改为开发板ARM-Linux操作系统中相应触摸屏驱动的名称/dev/touchscreen/0raw。

  $ echo yes | ./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp -prefix /usr/local/Qt-embedded-3.3.4-target -depths 16 -system-libpng -system-libjpeg
$ export QMAKESPEC="qws/linux-arm-g"++
$ make
$ sudo make install
$ sudo cp -r lib/fonts/ /usr/local/Qt-embedded-3.3.4-target/lib/

  此时,将交叉编译的Qt/E 3.3.4的库文件下载至开发板中,并设置相应的环境变量QTDIR、PATH、LD_LIBRARY_PATH等。另外还要设置触摸屏环境变量如下:
$ export QWS_MOUSE_ PROTO="LinuxTP:/dev/touchscreen/0raw"
$ export QWS_KEYBOARD=

  此时,触摸屏可能仍无法工作或误差较大,其主要原因是开发板操作系统中/etc/pointercal文件不存在或该文件中对触摸屏进行调整的校准参数不正确,需对/etc/pointercal文件进行修改。修改方法有两种:一种方法是直接新建该文件,并在文件中按正确格式添加相应参数;另一种方法是交叉编译tslib-1.3.tar.bz2,将生成的校准程序拷贝至目标板,设置环境变量,运行校准程序,可直接生成高精度的/etc /pointercal文件。这里推荐使用第二种方法。

  至此,Qt/E3.3.4便可在目标板上正确执行,移植完毕。

  Qt/E编程

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

  多线程编程

  通常情况下图形用户界面应用程序有一个执行线程并且每次执行一个操作。如果用户在单线程的应用程序中从用户界面中调用一个耗时的操作,当这个操作被执行的时候,用户界面通常会被冻结。本实现使用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编程对其进行了初步实现。实验结果证明,

系统定位数据精确、界面友好、系统可扩展性强,较好地完成了物流信息化终端定位功能。

  参考文献

  1.常菲,李明禄,李鲁群.物流配送中移动定位技术研究[J].微型电脑应用(研究与设计),2004,20(1).22-24

 2.杨晕,胡永健,林志泉.基于Linux和S3C2410嵌入式图象传输系统设计[J].微计算机信息(嵌入式与SOC),2007,23(3-2).20-24

  3.(加拿大)布兰切尼(Blanchette,J.),(英)桑姆菲尔德(Summerfield,M.)著;齐亮译.C++ GUI Qt3 编程[M].北京:北京航空航天大学出版社,2006

关键字:Embedded  物流信息  终端导航  定位功能 引用地址:基于Qt/Embedded的物流信息终端导航定位功能设计

上一篇:一种嵌入式便携数据采集分析仪
下一篇:基于ARM和VxWorks实现自动彩信发送的嵌入式系统

推荐阅读最新更新时间:2024-03-16 12:56

高新兴基于openEuler Embedded打造安防特种机器人更强系统底座
应用场景 广州高新兴有限是全球领先的巡逻机器人与服务提供商。聚焦安保巡逻机器人领域,产品已广泛应用于公安、企业园区、地产物业等场景。巡逻机器人是综合采用、、等技术,集成环境感知、动态决策、行为控制和报警装置,具备自主感知、自主行走、自主保护等能力的多功能装备。可以帮助人类完成基础性、重复性和危险性的安保工作,推动公共安全服务升级,提升安全效果和降低安保服务成本等。 高新兴机器人秉持提升产品竞争力的目标,在产品软采用多元化供应的策略。一方面识别选用有竞争力的供应商,提前防范单一供应存在的不确定风险。同时响应国家科技自主创新战略,在其部分新产品进行的改造,将原来部署在机器人上的 Ubuntu 操作系统替换成基于欧拉
[机器人]
CSR推出GNSS扩展功能,显著提升车载导航定位性能
    CSR公司日前发布两款针对车用级quad-GNSS定位平台 SiRFstarV™ 5ea的重要软件,新增对GPS和北斗卫星导航系统(BDS)同步运行的支持,同时还对SiRFDRive®软件无/弱信号航位推算算法进行了重要升级。这些升级功能使SiRFstarV™ 5ea能够提供增强型车载导航定位性能,从而满足全球领先OEM厂商的需求。     全新软件在SiRFstarV™ 5ea现有GPS和GLONASS功能上新增了对中国BDS系统的支持,使汽车OEM厂商能够更加灵活地同步运行GPS和GLONASS或 GPS和BDS。新增BDS功能有利于OEM厂商将其产品推广到需要BDS支持的地区,并充分利用已在中国及其周边国家全面运
[汽车电子]
Konqueror/embedded向ARM-Linux平台的移植和汉化
引言 目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。 Konqueror/embeded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。    Konqueror/embedded的结构    Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;
[单片机]
Konqueror/<font color='red'>embedded</font>向ARM-Linux平台的移植和汉化
蓝牙5.1全新测向功能为IoT提供商提高3倍定位精确度
-新的Silicon Labs解决方案为资产跟踪、室内定位和移动定位服务提供1米以内的定位精度- Silicon Labs (亦称“芯科科技”,NASDAQ:SLAB)发布用于 Wireless Gecko 产品组合的新型Bluetooth®软件,这款产品组合是业界最全面的物联网(IoT)连接解决方案。Silicon Labs的商业、工业和零售客户可以使用今天发布的蓝牙核心规范5.1中添加的蓝牙测向功能,增强其基于位置的相关服务,例如室内导航、资产跟踪、空间利用和兴趣点(POI)等。 为了满足位置服务(location services)市场不断增长的需求,蓝牙增加了一种新的测向(direction finding
[物联网]
蓝牙5.1全新测向<font color='red'>功能</font>为IoT提供商提高3倍<font color='red'>定位</font>精确度
为何物联网设备都需要地理定位功能
地理定位是最为强大、发展势头最为迅猛的物联网应用之一。 Market Insight Reports 报告称:到 2025 年,“带有地理定位功能的物联网”市场的规模预计将从现在的 400 亿美元增长至 740 亿美元。 本文将探究应用于追踪高价值资产的定位功能有何显著优势。 防丢失 据美国国家货运安全委员会(National Cargo Security Council)估算,每年货物丢失造成的全球财务损失超过500亿美元。从小范围来说,根据最近对1000名美国成年人的调查,美国人在一生中平均会丢失 5591 美元的财物。 应对重要物品遭遇欺诈性盗窃和丢失的有效解决方案就是定位技术,该技术能记录并跟踪资产,
[焦点新闻]
为何物联网设备都需要地理<font color='red'>定位</font><font color='red'>功能</font>?
Windows Embedded Standard 2011技术亮点
    相信很多人对Windows Embedded Standard 2011的新特性都有所了解,你可能已经知道,WES 2011基础OS平台不再是XP专业版了,基于XP的WES已经有好几年历史了,随着Windows 7的诞生,Windows Embedded Standard 2011开始使用新的OS平台 – Windows 7。     首先需要注意的是Windows Embedded Standard 2011与之前的版本完全不同了,操作系统的发展模式发生了巨大的转变,朝着标准的维护和Windows 7配置功能发展,从此我们可以向组件数据库,目标设计器,组件设计器和组件数据库管理器说拜拜了,新的工具叫做镜像生成器向导(
[嵌入式]
基于RFID的航空食品物流信息管理平台
针对国内航空食品物流工作中的不足,基于RFID技术建立起一个完整高效的、可用性强的物流管理信息系统,并采用网络传输、数据库管理、信息集成等技术构建起整个物流业务信息化体系,为航空食品物流提供成功解决方案。实验结果表明,系统运行稳定可靠,达到了预期的效果。
[模拟电子]
基于RFID的航空食品<font color='red'>物流</font><font color='red'>信息</font>管理平台
MiniGUI在车载导航终端中的应用
摘要:提出一种GPS车载导航终端的设计方案,并针对电子地图导航所需的图形界面支持系统进行详细论述。MiniGUI作为一种主要运行于嵌入式Linux下的图形用户界面支持系统,在本文中将其应用到车载导航仪中,并提出一种基于MiniGUI的电子地图的设计方法,配合GPS信号接收机,实现定位导航功能。 关键词:GPS MiniGUI 电子地图 车载导航 引 言   随着社会信息化的日益发展,车载终端的主要发展方向应该是监控跟踪及导航相结合,即所谓的车载信息系统,长远发展则是通信、导航、娱乐、安防、办公和上网为一体的车辆信息系统。 1 系统整体设计方案   本文中提出的车载导航终端设计方案,可实现GPS导航、电子地图实时定位、GS
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved