• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于GPS的校園巡航定位系統(tǒng)模型設(shè)計(jì)

    2012-04-29 00:00:00張碩王嘉偉石雙龍
    企業(yè)導(dǎo)報 2012年24期

    【摘 要】項(xiàng)目采用基于NMEA-0183協(xié)議的GPS模塊作定位的數(shù)據(jù)采集部分,設(shè)計(jì)制作出一套能夠?qū)崿F(xiàn)校園定位的系統(tǒng)模型,為日后學(xué)校繼續(xù)深入研究校園GPS應(yīng)用指明研究方向,奠定算法基礎(chǔ),以便日后加以改進(jìn)后能正式投入應(yīng)用,或應(yīng)用于校園導(dǎo)航或應(yīng)用于校園車輛監(jiān)控。

    【關(guān)鍵詞】GPS;校園巡航定位系統(tǒng);設(shè)計(jì)

    一、GPS校園巡航定位系統(tǒng)硬件設(shè)計(jì)方案

    我們設(shè)計(jì)了一套硬件系統(tǒng),發(fā)送模塊作為手持終端,接收模塊接收手持終端傳來的數(shù)據(jù)并送至PC,在PC軟件界面中觀察手持終端的位置信息,從而實(shí)現(xiàn)定位功能。硬件設(shè)計(jì)方案如下圖所示:

    (1)接收在線數(shù)據(jù)。此模塊通過打開現(xiàn)存在的串口,從而實(shí)時的接收下位機(jī)上傳的定位數(shù)據(jù)。對現(xiàn)有串口進(jìn)行打開的時候,必須設(shè)置波特率,校驗(yàn)位,停止位等相關(guān)參數(shù)。(2)接收離線數(shù)據(jù)。此模塊是用于讀取已經(jīng)采集的定位數(shù)據(jù),只能進(jìn)行離線數(shù)據(jù)的解析。(3)提取經(jīng)緯度。軟件只針對GPRMC的定位信息進(jìn)行解析,其他類型的定位信息過濾掉。從而提取出有效的經(jīng)緯度。(4)顯示位置。通過提取到的有效經(jīng)緯度,根據(jù)已知點(diǎn)的經(jīng)緯度,從而計(jì)算出現(xiàn)有經(jīng)緯度在地圖上的位置,從而顯示出來

    二、項(xiàng)目研究過程中的難點(diǎn)及解決途徑,應(yīng)用的關(guān)鍵技術(shù)

    1.硬件設(shè)計(jì)過程中遇到的問題及解決方法。硬件程序設(shè)計(jì)中的難點(diǎn)是數(shù)據(jù)傳輸方面的問題,GPS模塊與單片機(jī)進(jìn)行通信把信息數(shù)據(jù)傳入單片機(jī),單片機(jī)把數(shù)據(jù)放入其外部緩存,無線數(shù)據(jù)傳輸模塊再將數(shù)據(jù)從單片機(jī)緩存區(qū)中取出放入自己的數(shù)據(jù)寄存器然后打包發(fā)送,這之間遇到的問題是數(shù)據(jù)傳輸過程中的格式問題。NRF905在進(jìn)行數(shù)據(jù)傳輸時是先把數(shù)據(jù)放入數(shù)組里再進(jìn)行傳輸并且它只能以十六進(jìn)制的數(shù)據(jù)形式發(fā)送數(shù)據(jù),而GPS模塊接收到的數(shù)據(jù)雖然是16進(jìn)制的,但沒有添加0x標(biāo)志,這樣NRF905發(fā)送出的數(shù)據(jù)就會是亂碼。我們采取的解決方案就是把接收到的數(shù)據(jù)進(jìn)行從16進(jìn)制到ASCII碼的整形,這樣數(shù)據(jù)就有了統(tǒng)一格式,問題也得到了解決。其次就是時序匹配的問題,單片機(jī)從串口接收GPS數(shù)據(jù)的速度是很快的,一次5串GPS代碼,而且每串代碼從80位到96位長度不等,屬于一種批量不定長數(shù)據(jù)傳輸,而NRF905的最大發(fā)送數(shù)據(jù)的位寬是32位,而且發(fā)送數(shù)據(jù)前要進(jìn)行SPI總線讀寫時序配置,這樣就會有一個數(shù)據(jù)發(fā)送的延遲。所以我們需要切割數(shù)據(jù),并且注意發(fā)送速度與接收速度的匹配,如果發(fā)的太快,接收部分接收到的數(shù)據(jù)就會是亂碼,如果發(fā)的太慢就會丟失有效數(shù)據(jù),降低數(shù)據(jù)的有效率(因?yàn)閱纹瑱C(jī)的片外數(shù)據(jù)緩存是有限制的,一旦占滿了就會被新的數(shù)據(jù)覆蓋,也就是說數(shù)據(jù)如果不及時取出就會被新的數(shù)據(jù)覆蓋,而新的數(shù)據(jù)不一定是有效數(shù)據(jù))。我們通過不斷更改延時直到傳輸不會再一直出現(xiàn)亂碼。

    2.軟件設(shè)計(jì)過程中遇到的問題及解決方法。在軟件設(shè)計(jì)過程中,最棘手的問題是打開現(xiàn)存的串口,并且接收下位機(jī)發(fā)送給PC的定位數(shù)據(jù)方面。先期由于沒有接觸過串口編程,所以在這個模塊方面還是摸索了很長時間,最后通過查閱資料,終于解決了問題?,F(xiàn)列舉此模塊代碼如下: BOOL SetSerielPort

    (char * szPort,int rate,int checkBits,int bitSize,int stopbits)

    {

    BOOL istrue=FALSE;

    m_hCom=CreateFile(szPort,

    GENERIC_READ|GENERIC_WRITE,0,NULL,OP

    EN_EXISTING,F(xiàn)ILE_ATTRIBUTE_NORMAL|

    FILE_FLAG_OVERLAPPED,NULL);

    if( m_hCom == INVALID_HANDLE_VALUE )

    {

    MessageBox(“串口com創(chuàng)建失敗”);

    return FALSE;

    }

    DCB dcb;

    ZeroMemory(dcb,sizeof(DCB));

    dcb.DCBlength=sizeof(dcb);

    dcb.BaudRate=rate;

    dcb.ByteSize=bitSize;

    dcb.Parity=checkBits;

    dcb.StopBits=stopbits;

    dcb.fBinary=TRUE;

    dcb.fParity=FALSE;

    istrue=SetCommState(m_hCom,dcb);

    if (!istrue)

    {

    MessageBox(“串口設(shè)置失敗”);

    m_hCom=NULL;

    return FALSE;

    }

    COMMTIMEOUTS comTimeOut;

    comTimeOut.ReadIntervalTimeout=10;

    // 將超時參數(shù)寫入設(shè)備控制

    istrue=SetCommTimeouts(m_hCom,comTimeOut);

    if(!istrue)

    {

    MessageBox(“超時時間設(shè)置失?。 保?;

    m_hCom=NULL;

    return FALSE;

    }

    SetupComm(m_hCom,1024,512);

    istrue=PurgeComm(m_hCom,PURGE_TXABORT|PURGE

    _RXABORT|PURGE_TXCLEAR|PURGE_RXABORT);

    if(!istrue)

    {

    MessageBox(“緩沖區(qū)數(shù)據(jù)清除失?。 保?;

    m_hCom=NULL;

    return FALSE;

    }

    return TRUE;

    三、研究成果的前景展望

    如果考慮改進(jìn)系統(tǒng)以便在校園內(nèi)投入使用,可以考慮更換傳輸模塊,把局域無線數(shù)據(jù)傳輸模塊更換為基于網(wǎng)絡(luò)的無線數(shù)據(jù)傳輸模塊并做相應(yīng)的開發(fā)研究,本系統(tǒng)是可以作為一個校園車輛定位系統(tǒng)而投入實(shí)際使用的,至于上位機(jī)軟件也是可以根據(jù)需要而更換數(shù)據(jù)庫的。

    黑龙江省| 仪征市| 乌审旗| 庆阳市| 康定县| 图木舒克市| 达日县| 那曲县| 梅河口市| 鞍山市| 上思县| 阜阳市| 云林县| 庄浪县| 沈阳市| 河津市| 家居| 遂溪县| 阜阳市| 光山县| 花莲县| 沈阳市| 满洲里市| 平果县| 定襄县| 莲花县| 故城县| 安泽县| 云龙县| 临城县| 修武县| 保山市| 台湾省| 阳原县| 滁州市| 合作市| 禄劝| 长宁县| 盘山县| 宿松县| 安乡县|