在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            基于Qt/Embedded的物流信息終端導(dǎo)航定位功能設(shè)計

            ——
            作者: 時間:2007-10-09 來源:電子設(shè)計應(yīng)用 收藏

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

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

            基于現(xiàn)有網(wǎng)絡(luò)建設(shè)的總體情況和物流配送過程中對定位數(shù)據(jù)的可靠性、連續(xù)覆蓋性、精度的要求,并綜合考慮各種定位技術(shù)的發(fā)展現(xiàn)狀及技術(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)星定位信號;GSM/GPRS模塊提供通信以及CELLID定位信息獲??;RFID模塊提供標(biāo)簽信息采集和RFID定位功能。終端通過GSM/GPRS通信網(wǎng)絡(luò)與物流信息控制中心建立聯(lián)系,提交相關(guān)數(shù)據(jù)采集信息和接收物流信息控制中心指令。

            圖1 系統(tǒng)軟、硬件功能框圖

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

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

            本文的軟件系統(tǒng)設(shè)計主要以S3C2410平臺為核心,通過RS-232串口從GPS模塊、GSM/GPRS模塊、RFID模塊提取定位信息,加以分析轉(zhuǎn)換,并根據(jù)需要用于終端導(dǎo)航或通過GSM/GPRS網(wǎng)絡(luò)提交給物流信息控制中心。  

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

            由于目標(biāo)平臺資源所限,需要搭建交叉編譯環(huán)境,本系統(tǒng)開發(fā)過程中采用的平臺如下:
            宿主機: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)機: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中所需要的頭文件、庫文件在交叉編譯前正確安裝,并移植相應(yīng)的庫文件至目標(biāo)機中,此類文件的具體安裝在此不再贅述。下面主要對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

            安裝Qt/E 3.3.4的宿主機版本

            為便于在宿主機上進(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)機版本
            $ 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沒有專門針對觸摸屏的配置選項,為了確保觸摸屏能正常工作,可以利用現(xiàn)有的配置選項進(jìn)行修改,以滿足實際需要。現(xiàn)利用qt-mouse-Linuxtp修改觸摸屏驅(qū)動。

            修改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ū)動的名稱/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的庫文件下載至開發(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=

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

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

            Qt/E編程

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

            多線程編程

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

            畫布模塊

            畫布模塊中QCanvas庫是一個高度優(yōu)化的二維繪圖庫,QCanvas可以包含很多任意圖形的項并且在內(nèi)部使用雙緩沖來避免閃爍,而且QCanvas支持分層,適合數(shù)字地圖的分層顯示。QCanvas與其它畫布模塊結(jié)合使用,能很方便地實現(xiàn)導(dǎo)航地圖的顯示、縮放、漫游以及鷹眼等功能。下面是導(dǎo)航地圖常用操作的實現(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)前定位點居于顯示地圖正中
            {
            mapview->center (pointx,pointy);
            }
            void Form2::movleft()  //定位點在地圖上移動
            {
            i->move (pointx,pointy);
            canvas->update();
            }

            初步實現(xiàn)

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

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

            結(jié)語

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



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉