新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM9的物流終端定位功能的設(shè)計(jì)和實(shí)現(xiàn)

基于ARM9的物流終端定位功能的設(shè)計(jì)和實(shí)現(xiàn)

作者: 時(shí)間:2013-01-04 來源:網(wǎng)絡(luò) 收藏

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

  系統(tǒng)硬件開發(fā)板CPU采用的是三星公司的內(nèi)部集成20T處理器核的S3C2410芯片。GPS模塊提供衛(wèi)星定位信號(hào);GSM/GPRS模塊提供通信與CELLID定位信息獲取;RFIDS模塊提供標(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)相應(yīng)功能。

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

  本文的軟件系統(tǒng)設(shè)計(jì)主要以S3C2410平臺(tái)為核心,將從GPS模塊、GSM/GPRS模塊、RFID模塊提取的定位信息進(jìn)行相應(yīng)分析處理,完成物流信息終端導(dǎo)航。

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

  宿主機(jī):RED HAT 9.0; 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,需要確保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等QT中所需要的頭文件 、庫文件在交叉編譯前正確安裝,并移植相應(yīng)的庫文件至目標(biāo)機(jī)中。在交叉編譯QT/Embedded 3.3.4前正確設(shè)置環(huán)境變量,本系統(tǒng)QT/Embedded 3.3.4交叉編譯選項(xiàng)為:./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp,可根據(jù)實(shí)際情況進(jìn)行相應(yīng)裁減。

  軟件關(guān)鍵技術(shù)分析

  1)GPS定位信息提取

  目前常用的GPS-OEM模塊均支持NMEA-0183的數(shù)據(jù)格式。NMEA-0183是以語句來發(fā)送數(shù)據(jù)的,每條語句都相對(duì)獨(dú)立并有完整意義。語句包含若干由ASCII文本字符組成的字段, 每條語句都以“$”開頭,以回車換行結(jié)束,數(shù)據(jù)包含在字段中,字段之間由逗號(hào)分 隔。每條語句的第一個(gè)字段表明語句的意義,在標(biāo)準(zhǔn)語句中,“$”后的兩位字符為“talkerID”,表示發(fā)送數(shù)據(jù)的設(shè)備,如GP表示GPS;接著的三位字符為“sentenceID”,表示了該語句的類型,如GGA,RMC等。語句中每個(gè)字段的含義隨語句類型而定,語句的最后一個(gè)字段是檢驗(yàn)和(checksum),由“*”和兩位十六進(jìn)制數(shù)字及回車換行符組成,檢驗(yàn)和是“$”和“*”之間所有字符的邏輯異或運(yùn)算結(jié)果,用于檢驗(yàn)和確認(rèn)數(shù)據(jù)的傳輸是否正確。

  對(duì)于終端導(dǎo)航而言,“$GPRMC”幀格式可以滿足大部分需求,其幀長相對(duì)較短,便于信息處理。因此,在本系統(tǒng)中,選取“$GPRMC”幀進(jìn)行定位信息提取。系統(tǒng)通過RS232串口從GPS-OEM模塊中接收定位數(shù)據(jù),從接收數(shù)據(jù)中的“$GPRMC”幀提取時(shí)間、經(jīng)緯度、速度、方位角等定位導(dǎo)航信息。其程序模塊主體結(jié)構(gòu)如下:

  ……

  //判斷是否為$GPRMC幀頭,并進(jìn)行標(biāo)記

  if(Data[i]=='$' Data[i+3]=='R')……

  //判斷是否為幀尾,幀尾以換行字符表示,數(shù)值為10 ''

  if(Data[i]==10 SectionID==13)

  { ……id_check=m*16+n; //得到檢驗(yàn)數(shù)據(jù)的INT型

  if(chk_result!=id_check) //比較異或運(yùn)算結(jié)果與檢驗(yàn)數(shù)據(jù)是否一致

  …… i f( Data[i]=='*' SectionID==12 ) //異或運(yùn)算結(jié)果

  ……

  //對(duì)$至*之間的字符進(jìn)行異或運(yùn)算,得到結(jié)果chk_result

  for( ; Data[n]!='*"; n++) chk_result^=Data[n];//判斷逗號(hào),區(qū)分識(shí)別數(shù)據(jù),并判別*號(hào),區(qū)分校驗(yàn)數(shù)據(jù)

  if(Data[i]==','||(Data[i]=='*' SectionID==12) )SectionID++;

  else

  { switch(SectionID){ case 1: //提取時(shí)間m_sTime[a++]=Data[i];break;case 2: //接收判別有效性數(shù)據(jù)A為有效,V為無效……case 3: //提取緯度……//提取經(jīng)度、速度、方位角、校驗(yàn)數(shù)據(jù)等其它信息。



關(guān)鍵詞: ARM9 物流終端 定位功能

評(píng)論


相關(guān)推薦

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

關(guān)閉