天天干夜夜弄_黄毛片网站_2012中文版免费观看_久操视频在线_欧美日韩一区二区电影_日韩av片在线免费观看

  • Cehui8.com 測(cè)繪地理信息領(lǐng)域?qū)I(yè)門(mén)戶
  • 首頁(yè) > 測(cè)繪論文 > GIS

    基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的通信網(wǎng)關(guān)設(shè)計(jì)

    2013-07-09 15:39:19 來(lái)源: 測(cè)繪論壇 作者:
    聊聊

    摘  要:本文主要介紹了基于GIS/GPS/GSM的小型車(chē)輛監(jiān)控系統(tǒng)的原理和涉及的相關(guān)技術(shù),并討論了本系統(tǒng)的通信網(wǎng)關(guān)的技術(shù)實(shí)現(xiàn)。
    關(guān)鍵詞:GPS  GIS  GSM  車(chē)輛監(jiān)控 短消息

    1 前言
    機(jī)動(dòng)車(chē)輛的出現(xiàn),給人們的生活帶來(lái)了很多方便,同時(shí)也帶來(lái)了很多棘手的問(wèn)題,例如車(chē)輛分散不易管理,車(chē)輛盜竊,車(chē)輛遇搶等問(wèn)題。如何使車(chē)輛的管理科學(xué)化和提高車(chē)輛的運(yùn)營(yíng)安全,已經(jīng)成為一個(gè)亟待解決的重大課題。
    2 基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)原理和組成
    2.1 基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的工作原理
    基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)使用GPS接收機(jī)進(jìn)行自動(dòng)定位,車(chē)載單元的GPS接收模塊接收GPS衛(wèi)星(共24顆,分布在6個(gè)不同的地球軌道上)每秒鐘發(fā)來(lái)的定位數(shù)據(jù),并根據(jù)從三顆以上不同衛(wèi)星發(fā)來(lái)的數(shù)據(jù)計(jì)算出自身所處的地理坐標(biāo)。坐標(biāo)數(shù)據(jù)通過(guò)GSM模塊,利用短信的形式將車(chē)輛的位置、狀態(tài)、報(bào)警器和傳感器輸入的信息按規(guī)定的協(xié)議編碼發(fā)送至GSM網(wǎng)絡(luò),GSM網(wǎng)絡(luò)將接收到的車(chē)輛定位信息傳送至監(jiān)控中心的通信網(wǎng)關(guān)上,經(jīng)過(guò)通信網(wǎng)關(guān)處理后,轉(zhuǎn)發(fā)到GIS監(jiān)控終端并在地圖上顯示移動(dòng)目標(biāo)的地理位置,這樣控制中心就可清楚和直觀地掌握車(chē)輛的動(dòng)態(tài)位置,從而把握了車(chē)輛的運(yùn)營(yíng)情況。在車(chē)輛在遇到緊急情況時(shí),可通過(guò)車(chē)載設(shè)備,采用自動(dòng)或手動(dòng)報(bào)警,將車(chē)輛所在位置、報(bào)警類型等數(shù)據(jù)發(fā)送至控制中心,經(jīng)監(jiān)控計(jì)算機(jī)處理后,及時(shí)將事發(fā)車(chē)輛的精確位置顯示在電子地圖上,為決策解決事故的方案提供依據(jù)。另一方面,控制管理中心也可以根據(jù)當(dāng)前的車(chē)輛的運(yùn)行情況,給車(chē)輛發(fā)指揮信息調(diào)度車(chē)輛的行駛。
    2.2    基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的系統(tǒng)構(gòu)成
    基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)由監(jiān)控中心、車(chē)載終端和GSM無(wú)線網(wǎng)絡(luò)三個(gè)部分組成。
    監(jiān)控中心是基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的核心,由通信網(wǎng)關(guān)和GIS監(jiān)控終端組成,它主要完成各種信息的轉(zhuǎn)發(fā)。一方面,接收車(chē)載終端上傳的車(chē)輛信息,并且把這些信息分發(fā)給相應(yīng)的GIS監(jiān)控計(jì)算機(jī),以實(shí)現(xiàn)對(duì)車(chē)輛的監(jiān)控和管理。另外一個(gè)方面,監(jiān)控中心響應(yīng)GIS監(jiān)控計(jì)算機(jī)發(fā)出的對(duì)車(chē)載設(shè)備的控制信息,并且把這些信息下發(fā)到相應(yīng)的車(chē)載設(shè)備上,從而達(dá)到對(duì)車(chē)輛進(jìn)行控制的目的。
    車(chē)載終端,由GPS接收單元、GSM模塊、車(chē)載控制單元、顯示屏、GPS天線和相應(yīng)的傳感器件等組成。車(chē)載終端通過(guò)GSM網(wǎng)絡(luò)和監(jiān)控中心進(jìn)行雙向的信息傳輸;它接收GPS定位信號(hào),并將車(chē)輛的位置和狀態(tài)信息傳送到監(jiān)控中心,同時(shí)接收監(jiān)控中心的控制數(shù)據(jù),并且對(duì)車(chē)輛進(jìn)行控制。
    GSM網(wǎng)絡(luò)是車(chē)載終端和監(jiān)控中心進(jìn)行信息交互的數(shù)據(jù)鏈路。其的功能是:將GPS定位信息準(zhǔn)確的傳回監(jiān)控中心;將監(jiān)控中心的控制數(shù)據(jù)傳給車(chē)載設(shè)備。
        基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖1所示。
    2 何利用GSM的AT指令進(jìn)行短消息的發(fā)送和接收
    (1)    設(shè)置短消息服務(wù)中心號(hào)碼
    AT+CSCA=“+861380028500”(短消息中心號(hào)碼)
    (2)    設(shè)置短消息的格式
    AT+CMGF=1(1:文本格式  0:PDU格式)
    (3)    發(fā)送短消息(短消息內(nèi)容為T(mén)EST)
    AT+CMGS=“13666188700”
    >TEST ctr+z
    (4)    設(shè)置收到新的短消息后自動(dòng)提示
    AT+CNMI=1,1,0,0,1
    當(dāng)收到新的短消息,將會(huì)獲得以下的提示指令:
    +CMTI:“SM”,INDEX(新短消息的存儲(chǔ)的索引號(hào))
    (5)    讀取新短消息的內(nèi)容(假設(shè)短消息的內(nèi)容為“GOOD”),INDEX=8
    AT+CMGR=8
    返回短消息的內(nèi)容如下:
    +CMGR:“REC UNREAD”,“+8613666188700”,“02/07/16,15:37:38”,“GOOD”
    3. 3 信網(wǎng)關(guān)程序的設(shè)計(jì)要點(diǎn)
    通信網(wǎng)關(guān)程序是GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng)的極為重要的一個(gè)組成部分,通信網(wǎng)關(guān)程序的性能如何將對(duì)整個(gè)系統(tǒng)的能否很好的滿足用戶的需求產(chǎn)生決定性的影響,所以通信網(wǎng)關(guān)的程序設(shè)計(jì)工作比較復(fù)雜。由于篇幅的關(guān)系,在這里只給出了通信網(wǎng)關(guān)程序的設(shè)計(jì)思路和步驟。
        結(jié)合前面提及的GSM的AT指令,利用WIN32的對(duì)串口進(jìn)行操作的API函數(shù)可以很好的完成通信網(wǎng)關(guān)程序的設(shè)計(jì)。從MFC的WinThread類中派生一個(gè)CcomThread類,負(fù)責(zé)串口數(shù)據(jù)的接收和發(fā)送。
    (1)CcomThread類OpenConnection(LPTSTR pszDevName)負(fù)責(zé)串口的打開(kāi)、配置
    BOOL CComThread::OpenConnection(LPTSTR pszDevName)
    {
    ComDev=CreateFile(pszDevName,                                         GENERIC_READ|GENERIC_WRITE,   //允許讀寫(xiě)
                      0,  //此項(xiàng)為0                     
                      NULL,                      
                      OPEN_EXISTING,
                      FILE_FLAG_OVERLAPPED,
                      NULL);
        if(ComDev==(HANDLE)-1)
        return FALSE;
        dcb.DCBlength   =sizeof(DCB);
        GetCommState(ComDev,&dcb);             //得到串口初始設(shè)置
        dcb.BaudRate    =CBR_9600;                //波特率
        dcb.ByteSize    =8;                    //字節(jié)大小
        dcb.Parity      =NOPARITY;             //無(wú)奇偶效驗(yàn)
        dcb.StopBits    =ONESTOPBIT;
        SetCommState(ComDev,&dcb);
        SetupComm(ComDev,1024,1024);
        COMMTIMEOUTS CommTimeOuts;             //設(shè)置超時(shí)值
        CommTimeOuts.ReadIntervalTimeout=0;                      CommTimeOuts.ReadTotalTimeoutMultiplier=0;
        CommTimeOuts.ReadTotalTimeoutConstant=0;
        CommTimeOuts.WriteTotalTimeoutMultiplier=0;
        CommTimeOuts.WriteTotalTimeoutConstant=1000;
        SetCommTimeouts(ComDev,&CommTimeOuts);
        PurgeComm(ComDev,PURGE_TXCLEAR);//清除發(fā)送緩沖區(qū)
        PurgeComm(ComDev,PURGE_RXCLEAR);//清除接收緩沖區(qū)
        return TRUE;
    }
    (2)從串口接收數(shù)據(jù)的函數(shù)Recv()
    void CComThread::RECV()
    {
        DWORD dwErrorFlag;              //錯(cuò)誤標(biāo)志
        COMSTAT ComStat;    
        DWORD dwEventMask=0;       
        DWORD cByte;
    SetCommMask(comDev,EV_RXCHAR|EV_TXEMPTY);//設(shè)置監(jiān)聽(tīng)聽(tīng)事件
    WaitCommEvent(comDev,& dwEventMask,os);//等待監(jiān)聽(tīng)事件的發(fā)生
    If((dwEventMask&EV_RXCHAR)==EV_RXCHAR)
    {
        unsigned char strRecvBuf[256];
        int iRecvStrLen,i;
    ClearCommError(comDev,&dwErrorFlag,&ComStat);
    CByte= ComStat.cbInQue;
        If(Cbyte>0)
    {      iRecvStrLen=Cbyte;
               memset(strRecvBuf,0,256);
               BOOL bRead=ReadFile(ComDev,strRecvBuf,iRecvStrLen,&cByte,0);//讀串口
               if(!bRead)
               {
                  ClearCommError(ComDev,&dwErrorFlag,&ComStat);
               }
               for(i=0;i<iRecvStrLen;i++)
               {
                  RecvBuf[i]=strRecvBuf[i];
                 //RecvBuf為接收緩沖區(qū),CcomThread的類成員變量
    }
    }          
    AnalyzFrameIn(RecvBuf);// AnalyzFrameIn負(fù)責(zé)對(duì)接收的數(shù)據(jù)包進(jìn)行分析
    PurgeComm(ComDev,PURGE_RXCLEAR);
    }
    (3)對(duì)串口接收的數(shù)據(jù)包進(jìn)行分析
    對(duì)串口接收到的數(shù)據(jù)包,必須要進(jìn)行分析和識(shí)別,通過(guò)判斷數(shù)據(jù)包中包含的信息,決定下一步的執(zhí)行。在接收到的數(shù)據(jù)包中,如果包含了‘>’,表明請(qǐng)求發(fā)送短消息成功,現(xiàn)在可以通過(guò)串口發(fā)送短消息;如果包含了“+CMTI”,表明有新的短消息到達(dá),我們可以讀取新的短消息;如果包含了“+CMGR”,本數(shù)據(jù)包是短消息內(nèi)容的數(shù)據(jù)包,我們可以從此數(shù)據(jù)包中提取短消息的內(nèi)容。
    void CComThread::AnalyzFrameIn(char *FrameIn)
    {
    if(strstr(FrameIn,">")!=NULL)//現(xiàn)在可以發(fā)送短消息
    {
    SnedSMS();//發(fā)送短消息
    }
         if(strstr(FrameIn,"+CMGR")!=NULL)//讀短消息成功
         {
               //通知主線程處理接收到的短消息
               ::PostMessage((HWND)h_MainFrm,WM_NEWSMS,0,0);
         }
        if(strstr(FrameIn,"+CMTI")!=NULL)//收到新的短消息
        {
            //從數(shù)據(jù)包中,取出INDEX

           ReQuestReadSMS(INDEX);//請(qǐng)求讀取新的短消息
        }

    }
    (4)請(qǐng)求讀取短消息
    void CComThread::ReQuestReadSMS(int INDEX)
    {
    wsprintf(FrameOut,"%s"," AT+CMGR=");// AT+CMGR請(qǐng)求讀取新短消息
    Cstring strIndex;
    StrIndex.Format(“%d”,INDEX);
        strcat(FrameOut,strIdex);
        strcat(FrameOut,"r");
        WriteComm();//把FrameOut字符串從串口發(fā)送出去

    }
    (5)請(qǐng)求發(fā)送短消息
    void CComThread::RequestSend(char* ID)
    {  //ID為目的車(chē)載臺(tái)的SIM號(hào)碼
        wsprintf(FrameOut,"%s","at+cmgs=");// at+cmgs請(qǐng)求發(fā)送短消息
        strcat(FrameOut,ID);
        strcat(FrameOut,"r");
        WriteComm();//把FrameOut字符串從串口發(fā)送出去
    }
    (6)往串口發(fā)送數(shù)據(jù)
    OOL CComThread::WriteComm()
    {
        COMSTAT ComStat;
        DWORD dwErrorFlag;
        DWORD dwBytesWritten;
        int FrameLengthOut;
        FrameLengthOut=Frame_Length_Out;
        for(int flo=0;flo<FrameLengthOut;flo++)
        {//通過(guò)串口發(fā)送數(shù)據(jù)
           unsigned char tempchar=FrameOut[flo];
           BOOL bWrite=WriteFile(ComDev,&tempchar,1,&dwBytesWritten,NULL);
           if(!bWrite)                 //操作不成功
           {
               TRACE("write comm ERROR!n");
               ClearCommError(ComDev,&dwErrorFlag,&ComStat);//  清除錯(cuò)誤
               return FALSE;
           }
        }
        memset(FrameOut,0,sizeof(FrameOut));
        return TRUE;
    }
    (7)發(fā)送短消息
    void CComThread::sendSMS()
    {
           int I=strlen(FrameOut);//
           FrameOut[i++]=0x1a;// 0x1a為ctrl+z的ASCCI編碼
           FrameOut[i]='';
           Frame_Length_Out=strlen(FrameOut);
           WriteComm(); 

    }
    4 結(jié)論
    基于GIS/GPS/GSM小型車(chē)輛監(jiān)控系統(tǒng),是針對(duì)目前GPS車(chē)輛監(jiān)控應(yīng)用市場(chǎng)中,車(chē)臺(tái)容量比較小的單位用戶的車(chē)輛監(jiān)控需求而提出的一個(gè)系統(tǒng)方案。本系統(tǒng)通信網(wǎng)關(guān)采用GSM模塊和通信計(jì)算機(jī)組成,用戶只需要投入比較少的硬件的投資,就可以實(shí)現(xiàn)對(duì)車(chē)輛的監(jiān)控、定位功能。

      聲明①:文章部分內(nèi)容來(lái)源互聯(lián)網(wǎng),如有侵權(quán)請(qǐng)聯(lián)系刪除,郵箱 cehui8@qq.com

      聲明②:中測(cè)網(wǎng)登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點(diǎn)或證實(shí)其描述,文章內(nèi)容僅供參考。

      加群提示:我們創(chuàng)建了全國(guó)32個(gè)省份的地方測(cè)繪群,旨在打造本地測(cè)繪同行交流圈,有需要請(qǐng)聯(lián)系管理員測(cè)小量(微信 cexiaoliang)進(jìn)群,一人最多只能進(jìn)入一個(gè)省份群,中介人員勿擾

    主站蜘蛛池模板: 蜜桃视频精品 | 美女久久精品 | 日韩1区2区3区 | 亚洲日本乱码在线观看 | 国产福利在线观看 | 国产福利一区二区三区四区 | 蜜桃视频网站在线观看 | 亚洲国产精品麻豆 | 国产在线视频一区 | 色狠狠干| 一级视频在线观看 | 青青草国产成人av片免费 | 狠狠久久伊人中文字幕 | 在线日韩 | 久久免费精品视频 | 国产精品久久久久久久久动漫 | 欧美黄色大片网站 | 一级黄色录像免费观看 | 久草久草 | 丁香久久| 天天色天天色 | 亚洲日本午夜 | 97久久精品午夜一区二区 | 高清一区二区三区 | 毛片视频免费 | 超碰在线网 | 99久久精品国产一区二区成人 | 婷婷免费视频 | 久久久国产一区二区三区 | 欧美一级二级视频 | 亚洲精品一二区 | 性一级录像片片视频免费看 | 成人精品久久 | 青青久久久| 国产精品高潮呻吟久久av黑人 | 久久久久国产一级毛片 | av黄在线观看 | 97av超碰| 久久久99精品免费观看 | 亚洲 欧美 在线 一区 | 四虎新网址 |