當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Qt/Embedded的物流信息終端導(dǎo)航定位功能設(shè)計(jì)

Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平臺(tái)開發(fā)工具,是Qt的嵌入式版本。由于KDE等項(xiàng)目均使用Qt作為支持庫,所以許多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向?qū)ο?、跨平臺(tái)和界面設(shè)計(jì)方便美觀等優(yōu)點(diǎn),已得到了廣泛的應(yīng)用。

本文針對(duì)當(dāng)前物流行業(yè)終端定位功能的需求,提出與之相適應(yīng)的物流終端定位功能實(shí)現(xiàn)方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化終端平臺(tái)上對(duì)終端定位功能進(jìn)行了初步實(shí)現(xiàn)。

軟硬件系統(tǒng)設(shè)計(jì)原理

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

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

 

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

軟件系統(tǒng)設(shè)計(jì)

本文的軟件系統(tǒng)設(shè)計(jì)主要以S3C2410平臺(tái)為核心,通過RS-232串口從GPS模塊、GSM/GPRS模塊、RFID模塊提取

定位信息,加以分析轉(zhuǎn)換,并根據(jù)需要用于終端導(dǎo)航或通過GSM/GPRS網(wǎng)絡(luò)提交給物流信息控制中心。

宿主機(jī)開發(fā)環(huán)境建立

由于目標(biāo)平臺(tái)資源所限,需要搭建交叉編譯環(huán)境,本系統(tǒng)開發(fā)過程中采用的平臺(tái)如下:

宿主機(jī):RED HAT 9.0

Qt/X11 3.3.4

Qt/Embedded 3.3.4

SQLITE 2.8.16

cross-2.95.3.tar.bz2

目標(biāo)機(jī):Linux Kernel 2.4.18

Qt/Embedded 3.3.4

SQLITE 2.8.16

Qt/Embedded 3.3.4移植

為了正確交叉編譯Qt/Embedded,建議宿主機(jī)完全安裝RED HAT 9.0,同時(shí)要確保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的頭文件、庫文件在交叉編譯前正確安裝,并移植相應(yīng)的庫文件至目標(biāo)機(jī)中,此類文件的具體安裝在此不再贅述。下面主要對(duì)Qt/Embedded 3.3.4的交叉編譯及移植進(jìn)行詳細(xì)討論。

下載解壓源文件

$ 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

[!--empirenews.page--]

安裝Qt/E 3.3.4的宿主機(jī)版本

為便于在宿主機(jī)上進(jìn)行嵌入式程序開發(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的目標(biāo)機(jī)版本

$ 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沒有專門針對(duì)觸摸屏的配置選項(xiàng),為了確保觸摸屏能正常工作,可以利用現(xiàn)有的配置選項(xiàng)進(jìn)行修改,以滿足實(shí)際需要?,F(xiàn)利用qt-mouse-Linuxtp修改觸摸屏驅(qū)動(dòng)。

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

#

define Qt_QWS_IPAQ

#define Qt_QWS_IPAQ_RAW

修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改為開發(fā)板ARM-Linux操作系統(tǒng)中相應(yīng)觸摸屏驅(qū)動(dò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的庫文件下載至開發(fā)板中,并設(shè)置相應(yīng)的環(huán)境變量QTDIR、PATH、LD_LIBRARY_PATH等。另外還要設(shè)置觸摸屏環(huán)境變量如下:

$ export QWS_MOUSE_ PROTO=“LinuxTP:/dev/touchscreen/0raw”

$ export QWS_KEYBOARD=

[!--empirenews.page--]

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

至此,Qt/E3.3.4便可在目標(biāo)板上正確執(zhí)行,移植完畢。

Qt/E編程

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

多線程編程

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

畫布模塊

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

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()  //將當(dāng)前定位點(diǎn)居于顯示地圖正中

{

mapview->center (pointx,pointy);

}

void Form2::movleft()  //定位點(diǎn)在地圖上移動(dòng)

{

i->move (pointx,pointy);

canvas->update();

}

初步實(shí)現(xiàn)

嵌入式信息終端平臺(tái)定位功能的初步實(shí)現(xiàn)如圖2所示,該系統(tǒng)人機(jī)界面友好,定位精確。定位誤差主要取決于GPS-OEM模塊的定位精度,實(shí)驗(yàn)顯示,本系統(tǒng)能初步滿足物流信息終端對(duì)定位功能的需求。

 

[!--empirenews.page--]

結(jié)語

本文提出了一種嵌入式物流信息化終端定位功能的實(shí)現(xiàn)方案,并利用Qt/E編程對(duì)其進(jìn)行了初步實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果證明,

系統(tǒng)定位數(shù)據(jù)精確、界面友好、系統(tǒng)可擴(kuò)展性強(qiáng),較好地完成了物流信息化終端定位功能。

參考文獻(xiàn)

1.常菲,李明祿,李魯群。物流配送中移動(dòng)定位技術(shù)研究[J]。微型電腦應(yīng)用(研究與設(shè)計(jì)),2004,20(1)。22-24

2.楊暈,胡永健,林志泉?;贚inux和S3C2410嵌入式圖象傳輸系統(tǒng)設(shè)計(jì)[J]。微計(jì)算機(jī)信息(嵌入式與SOC),2007,23(3-2)。20-24

3.(加拿大)布蘭切尼(Blanchette,J.),(英)桑姆菲爾德(Summerfield,M.)著;齊亮譯。C++ GUI Qt3 編程[M]。北京:北京航空航天大學(xué)出版社,2006

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉