<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Qt/Embedded的物流信息終端導航定位功能設計

基于Qt/Embedded的物流信息終端導航定位功能設計

——
作者: 時(shí)間:2007-10-09 來(lái)源:電子設計應用 收藏

摘 要:本文介紹了圖形界面系統在嵌入式Linux系統和S3C2410平臺的上的移植與開(kāi)發(fā)過(guò)程,以及在上定位功能的系統設計方案和編程實(shí)現,并給出實(shí)驗結果。

是奇趣科技推出的基于Linux的嵌入式平臺開(kāi)發(fā)工具,是Qt的嵌入式版本。由于KDE等項目均使用Qt作為支持庫,所以許多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向對象、跨平臺和界面設計方便美觀(guān)等優(yōu)點(diǎn),已得到了廣泛的應用。
本文針對當前物流行業(yè)終端定位功能的需求,提出與之相適應的物流終端定位功能實(shí)現方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化終端平臺上對終端定位功能進(jìn)行了初步實(shí)現。
  
軟硬件系統設計原理

基于現有網(wǎng)絡(luò )建設的總體情況和物流配送過(guò)程中對定位數據的可靠性、連續覆蓋性、精度的要求,并綜合考慮各種定位技術(shù)的發(fā)展現狀及技術(shù)成熟度、實(shí)現成本等因素,本系統在物流配送網(wǎng)絡(luò )中采用了GPS輔助定位系統,即GPS+CellID+RFID+圖形道路匹配相結合的定位技術(shù)。

系統的軟硬件功能框圖如圖1所示,開(kāi)發(fā)板CPU采用的是三星公司的S3C2410。該處理器內部集成了ARM公司ARM920T處理器核的32位微控制器。GPS模塊利用RS232接口與開(kāi)發(fā)板通信,提供衛星定位信號;GSM/GPRS模塊提供通信以及CELLID定位信息獲??;RFID模塊提供標簽信息采集和RFID定位功能。終端通過(guò)GSM/GPRS通信網(wǎng)絡(luò )與物流信息控制中心建立聯(lián)系,提交相關(guān)數據采集信息和接收物流信息控制中心指令。

圖1 系統軟、硬件功能框圖

系統采用嵌入式Linux操作系統,移植Qt/Embedded 3.3.4和SQLITE數據庫,采用Qt編程實(shí)現物流信息化終端定位功能。

軟件系統設計

本文的軟件系統設計主要以S3C2410平臺為核心,通過(guò)RS-232串口從GPS模塊、GSM/GPRS模塊、RFID模塊提取定位信息,加以分析轉換,并根據需要用于終端導航或通過(guò)GSM/GPRS網(wǎng)絡(luò )提交給物流信息控制中心?! ?BR>
宿主機開(kāi)發(fā)環(huán)境建立

由于目標平臺資源所限,需要搭建交叉編譯環(huán)境,本系統開(kāi)發(fā)過(guò)程中采用的平臺如下:
宿主機: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,同時(shí)要確保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的頭文件、庫文件在交叉編譯前正確安裝,并移植相應的庫文件至目標機中,此類(lèi)文件的具體安裝在此不再贅述。下面主要對Qt/Embedded 3.3.4的交叉編譯及移植進(jìn)行詳細討論。

下載解壓源文件
$ 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的宿主機版本

為便于在宿主機上進(jìn)行嵌入式程序開(kāi)發(fā),利用qvfb進(jìn)行虛擬嵌入式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沒(méi)有專(zhuān)門(mén)針對觸摸屏的配置選項,為了確保觸摸屏能正常工作,可以利用現有的配置選項進(jìn)行修改,以滿(mǎn)足實(shí)際需要?,F利用qt-mouse-Linuxtp修改觸摸屏驅動(dòng)。

修改src/embedded/qmouselinuxtp-qws.h,添加下面兩行:
#define Qt_QWS_IPAQ
#define Qt_QWS_IPAQ_RAW

修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改為開(kāi)發(fā)板ARM-Linux操作系統中相應觸摸屏驅動(dòng)的名稱(chēng)/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/

此時(shí),將交叉編譯的Qt/E 3.3.4的庫文件下載至開(kāi)發(fā)板中,并設置相應的環(huán)境變量QTDIR、PATH、LD_LIBRARY_PATH等。另外還要設置觸摸屏環(huán)境變量如下:
$ export QWS_MOUSE_ PROTO=LinuxTP:/dev/touchscreen/0raw
$ export QWS_KEYBOARD=

此時(shí),觸摸屏可能仍無(wú)法工作或誤差較大,其主要原因是開(kāi)發(fā)板操作系統中/etc/pointercal文件不存在或該文件中對觸摸屏進(jìn)行調整的校準參數不正確,需對/etc/pointercal文件進(jìn)行修改。修改方法有兩種:一種方法是直接新建該文件,并在文件中按正確格式添加相應參數;另一種方法是交叉編譯tslib-1.3.tar.bz2,將生成的校準程序拷貝至目標板,設置環(huán)境變量,運行校準程序,可直接生成高精度的/etc/pointercal文件。這里推薦使用第二種方法。

至此,Qt/E3.3.4便可在目標板上正確執行,移植完畢。

Qt/E編程

本文采用Qt/Embedded 3.3.4版本,主要是考慮到Qt/E 3.3版本相對以往版本更成熟,可視化編程相對更方便易用,且其支持SQLITE數據庫驅動(dòng),便于數據庫操作與編程。在本設計中主要使用了Qt/E的畫(huà)布模塊、SQL模塊、網(wǎng)絡(luò )模塊及多線(xiàn)程編程,縮短了程序的開(kāi)發(fā)周期,提高了開(kāi)發(fā)效率。下面主要就多線(xiàn)程編程和畫(huà)布模塊編程進(jìn)行討論。

多線(xiàn)程編程

通常情況下圖形用戶(hù)界面應用程序有一個(gè)執行線(xiàn)程并且每次執行一個(gè)操作。如果用戶(hù)在單線(xiàn)程的應用程序中從用戶(hù)界面中調用一個(gè)耗時(shí)的操作,當這個(gè)操作被執行的時(shí)候,用戶(hù)界面通常會(huì )被凍結。本實(shí)現使用QThread子類(lèi)化得到QGPSThread類(lèi),并使用QMutex、QSemphore和QWaitCondition來(lái)同步各線(xiàn)程。QGPSThread類(lèi)用于通過(guò)串口編程接收GPS模塊的$GPRMC定位數據幀,并加以解析,得到實(shí)時(shí)的經(jīng)緯度等定位信息,供其它線(xiàn)程使用。

畫(huà)布模塊

畫(huà)布模塊中QCanvas庫是一個(gè)高度優(yōu)化的二維繪圖庫,QCanvas可以包含很多任意圖形的項并且在內部使用雙緩沖來(lái)避免閃爍,而且QCanvas支持分層,適合數字地圖的分層顯示。QCanvas與其它畫(huà)布模塊結合使用,能很方便地實(shí)現導航地圖的顯示、縮放、漫游以及鷹眼等功能。下面是導航地圖常用操作的實(shí)現代碼。

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()  //將當前定位點(diǎn)居于顯示地圖正中
{
mapview->center (pointx,pointy);
}
void Form2::movleft()  //定位點(diǎn)在地圖上移動(dòng)
{
i->move (pointx,pointy);
canvas->update();
}

初步實(shí)現

嵌入式信息終端平臺定位功能的初步實(shí)現如圖2所示,該系統人機界面友好,定位精確。定位誤差主要取決于GPS-OEM模塊的定位精度,實(shí)驗顯示,本系統能初步滿(mǎn)足對定位功能的需求。

圖2 嵌入式信息終端平臺定位功能的初步實(shí)現

結語(yǔ)

本文提出了一種嵌入式物流信息化終端定位功能的實(shí)現方案,并利用Qt/E編程對其進(jìn)行了初步實(shí)現。實(shí)驗結果證明,系統定位數據精確、界面友好、系統可擴展性強,較好地完成了物流信息化終端定位功能?!?BR> 
參考文獻
1.常菲,李明祿,李魯群.物流配送中移動(dòng)定位技術(shù)研究[J].微型電腦應用(研究與設計),2004,20(1).22-24
2.楊暈,胡永健,林志泉.基于Linux和S3C2410嵌入式圖象傳輸系統設計[J].微計算機信息(嵌入式與SOC),2007,23(3-2).20-24
3.(加拿大)布蘭切尼(Blanchette,J.),(英)桑姆菲爾德(Summerfield,M.)著(zhù);齊亮譯.C++ GUI Qt3 編程[M].北京:北京航空航天大學(xué)出版社,2006



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>