專利名稱:一種車載gps設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及車載GPS設(shè)備與服務(wù)器通信過程中私有協(xié)議與SIP協(xié)議轉(zhuǎn)換技術(shù),是一種GPS設(shè)備接入軟網(wǎng)關(guān)。
背景技術(shù):
近年來,伴隨著GPS技術(shù)的成熟,為了通過GPS系統(tǒng)對(duì)車輛,人員進(jìn)行更有效的管理,GPS設(shè)備與管理服務(wù)器之間的通信技術(shù)也便發(fā)展起來。目前不少設(shè)備廠商對(duì)GPS設(shè)備進(jìn)行了一定深度的開發(fā),對(duì)GPS功能進(jìn)行了擴(kuò)展。因此其在處理GPS數(shù)據(jù)時(shí),不再是發(fā)送簡(jiǎn)單的定位數(shù)據(jù)報(bào),而是對(duì)其進(jìn)行了私有協(xié)議下的數(shù)據(jù)封裝,然后通過TCP協(xié)議上傳服務(wù)器。但是由于不同廠家私有協(xié)議的之間的兼容性差,難以在車載定位,錄像采集,車輛管理等大應(yīng)用背景中進(jìn)行數(shù)據(jù)整合,使得設(shè)備在與服務(wù)器通信過程中,需要解析處理不同 協(xié)議報(bào)文,對(duì)管理造成困難。而且由于現(xiàn)有多媒體應(yīng)用中,如音視頻會(huì)話,常使用RTP,RTCP等自有通信協(xié)議。因此,在車載GPS設(shè)備與服務(wù)器會(huì)話過程中,通過某種會(huì)話管理協(xié)議,對(duì)不同類型協(xié)議類型數(shù)據(jù)進(jìn)行統(tǒng)一管理顯得十分重要。SIP是由IETF制定的一個(gè)應(yīng)用層的控制協(xié)議,可以用來建立、修改、和終止多媒體會(huì)話。通過與RTP/RTCP、SDP、RTSP等協(xié)議及DNS配合,SIP支持語音、視頻、數(shù)據(jù)等,并已經(jīng)取得了廣泛的應(yīng)用。因此加入SIP協(xié)議管理很好的滿足了車載GPS設(shè)備與服務(wù)器通信的需求。但如果要在GPS車載設(shè)備中直接加入SIP協(xié)議封裝模塊,必須對(duì)不同廠商的設(shè)備進(jìn)行軟硬件的重新設(shè)計(jì),成本大,也難以對(duì)現(xiàn)有產(chǎn)品進(jìn)行兼容。因此本方案,采用架設(shè)協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)的方式,對(duì)設(shè)備與服務(wù)器通信過程中的會(huì)話進(jìn)行設(shè)備私有協(xié)議與SIP協(xié)議的轉(zhuǎn)換,既保證了設(shè)備平臺(tái)的兼容性,又保證了服務(wù)器會(huì)話管理的統(tǒng)一性,擴(kuò)展性。
發(fā)明內(nèi)容
為了克服已有車載GPS設(shè)備與服務(wù)器通信過程中私有協(xié)議的通用性不強(qiáng),兼容性差,會(huì)話管理能力弱,擴(kuò)展能力有限等不足,本發(fā)明提供一種設(shè)備私有協(xié)議與SIP協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),對(duì)接入設(shè)備與通信會(huì)話進(jìn)行統(tǒng)一有效的管理,加強(qiáng)通信會(huì)話的統(tǒng)一性,有效性,可擴(kuò)展性。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是—種車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),所述軟網(wǎng)關(guān)的技術(shù)的主體構(gòu)架為Python語言,通過Twisted非堵塞網(wǎng)絡(luò)框架實(shí)現(xiàn)具體功能。所述Python語言為一種高階動(dòng)態(tài)編程語言。所述Twisted是一種基于事件的開源網(wǎng)絡(luò)框架;所述車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)為設(shè)備私有協(xié)議與SIP協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),所述軟網(wǎng)關(guān)包括Dev2GateFactory對(duì)象單兀,Dev2GateProtoco對(duì)象單兀和Simu_dev對(duì)象單元;所述Dev2GateFactory對(duì)象單元,用以負(fù)責(zé)Dev2GateProtocol對(duì)象的管理,模擬設(shè)備的本地UDP端口查找,數(shù)據(jù)庫讀寫接口等會(huì)話管理的方法實(shí)現(xiàn)。
所述Dev2GateProtocol對(duì)象單元,用以負(fù)責(zé)軟網(wǎng)關(guān)與GPS設(shè)備TCP連接超時(shí)管理,數(shù)據(jù)報(bào)文解析校驗(yàn),GPS設(shè)備數(shù)據(jù)庫讀取寫入,啟動(dòng)/停止模擬設(shè)備,私有協(xié)議與SIP協(xié)議轉(zhuǎn)換,轉(zhuǎn)發(fā)設(shè)備請(qǐng)求/響應(yīng)等網(wǎng)絡(luò)處理的方法實(shí)現(xiàn)。 所述Simu_dev對(duì)象單元,用以負(fù)責(zé)實(shí)例化軟網(wǎng)關(guān)中對(duì)應(yīng)注冊(cè)車載GPS設(shè)備的模擬設(shè)備,通過該模擬設(shè)備,實(shí)現(xiàn)設(shè)備與服務(wù)器之間會(huì)話的具體方法。進(jìn)一步,所述的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)Dev2GateProtocol對(duì)象中,本軟網(wǎng)關(guān)接收到GPS設(shè)備私有數(shù)據(jù)報(bào)文后,觸發(fā)dataReceivedO事件,實(shí)現(xiàn)所述數(shù)據(jù)報(bào)文解析校驗(yàn)方法首先調(diào)用函數(shù)QCpredeWserO進(jìn)行預(yù)解析處理,對(duì)報(bào)文進(jìn)行校驗(yàn),并解析出設(shè)備SN序列號(hào)與去除GPRS頭的數(shù)據(jù)報(bào)data。所述設(shè)備SN序列號(hào)由廠家自由定義,并事先注冊(cè)到軟網(wǎng)關(guān)設(shè)備數(shù)據(jù)庫中。軟網(wǎng)關(guān)讀取數(shù)據(jù)庫,檢索該設(shè)備SN序列號(hào)是否合法,并登記接入GPS設(shè)備網(wǎng)絡(luò)信息;所述Dev2GateProtocol對(duì)象單元中,依然在所述dataReceivedO事件里,實(shí)現(xiàn)私有協(xié)議與SIP協(xié)議報(bào)文轉(zhuǎn)換經(jīng)預(yù)解析和數(shù)據(jù)庫查詢之后的合法GPS設(shè)備,軟網(wǎng)關(guān)會(huì)將其需要上發(fā)至服務(wù)器的TCP報(bào)文數(shù)據(jù),保存到列表緩存dbuff中。然后函數(shù)deferToThread()進(jìn)入延遲對(duì)象Deferred子線程中,調(diào)用函數(shù)send2Server(),按照設(shè)定的時(shí)間間隔,從列表中讀取保存的私有協(xié)議數(shù)據(jù),經(jīng)函數(shù)QCdeWserO轉(zhuǎn)換為SIP協(xié)議報(bào)文之后發(fā)送至服務(wù)器,以防止GPS設(shè)備大量發(fā)送私有協(xié)議數(shù)據(jù)導(dǎo)致服務(wù)器負(fù)載過重。由于send2Server函數(shù)返回Deferred對(duì)象,該函數(shù)中的阻塞行為不會(huì)阻塞系統(tǒng),可以達(dá)到快速退出dataReceivedO事件的目的;所述Dev2GateProtocol對(duì)象單元中,TCP?;顧C(jī)制是每次收到GPS設(shè)備發(fā)送的TCP數(shù)據(jù)報(bào)文便更新報(bào)文時(shí)間。定時(shí)啟動(dòng)TCP超時(shí)處理程序,檢查當(dāng)前時(shí)間與最新報(bào)文時(shí)間間隔是否超時(shí),若超時(shí)則軟網(wǎng)關(guān)主動(dòng)斷開與設(shè)備的TCP連接。再進(jìn)一步,所述Dev2GateProtocol對(duì)象單元中,為了實(shí)現(xiàn)設(shè)備與服務(wù)器之間的會(huì)話,必須在每個(gè)設(shè)備第一次接入時(shí),注冊(cè)啟動(dòng)模擬設(shè)備simu_dev()對(duì)象實(shí)例。每個(gè)GPS設(shè)備對(duì)應(yīng)一個(gè)模擬設(shè)備實(shí)例,通過該實(shí)例經(jīng)過UDP鏈路向SIP服務(wù)器發(fā)送請(qǐng)求或響應(yīng)。同時(shí)也可以根據(jù)需要將服務(wù)器的請(qǐng)求與響應(yīng)轉(zhuǎn)發(fā)給GPS設(shè)備,以達(dá)到建立并完成會(huì)話目的。所述模擬設(shè)備實(shí)例中,實(shí)例化sip. Base類對(duì)象rvsip_endpoint,模擬設(shè)備端點(diǎn),用于上發(fā)服務(wù)器設(shè)備請(qǐng)求,或者服務(wù)器下發(fā)指令;實(shí)例化sip. Request類對(duì)象rvsip_request,用于組成上發(fā)服務(wù)器的相應(yīng)SI P協(xié)議請(qǐng)求報(bào)文。此外,模擬設(shè)備還實(shí)現(xiàn)了啟動(dòng)心跳包保活,向設(shè)備轉(zhuǎn)發(fā)服務(wù)器請(qǐng)求或響應(yīng)等功能的方法,從而對(duì)GPS設(shè)備與服務(wù)器之間的會(huì)話過程進(jìn)行有效處理。模擬設(shè)備在接收到服務(wù)器下發(fā)GPS設(shè)備指令時(shí),將調(diào)用QcserfdevO函數(shù),將SIP協(xié)議報(bào)文解析為設(shè)備可識(shí)別的私有協(xié)議報(bào)文,并下發(fā)。所述模擬設(shè)備Simu_dev O實(shí)例心跳包服務(wù),可以控制刷新TCP報(bào)文時(shí)間,維持GPS設(shè)備與軟網(wǎng)關(guān)的TCP連接,同時(shí)通過發(fā)送心跳報(bào)文刷新模擬設(shè)備實(shí)例與SIP服務(wù)器的會(huì)話注冊(cè)登陸狀態(tài),從而起到保持車載GPS設(shè)備,軟網(wǎng)關(guān)系統(tǒng),SIP服務(wù)器之間的通信連接的安全穩(wěn)定的作用。所述協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)中,一旦出現(xiàn)如TCP連接超時(shí),接入設(shè)備未注冊(cè),數(shù)據(jù)報(bào)文非法,會(huì)話無響應(yīng)等事件,則系統(tǒng)將觸發(fā)connectionLost O事件,執(zhí)行關(guān)閉TCP連接,刪除模擬設(shè)備,清空緩存等操作,保證網(wǎng)關(guān)網(wǎng)絡(luò)資源的有效性。所述私有協(xié)議數(shù)據(jù)報(bào)文預(yù)處理函數(shù)QCpredeV2Ser O,私有協(xié)議數(shù)據(jù)報(bào)文轉(zhuǎn)換XML格式SIP協(xié)議數(shù)據(jù)報(bào)文函數(shù)QCdev2ser O,SIP協(xié)議報(bào)文轉(zhuǎn)換成私有協(xié)議報(bào)文函數(shù)Qcser2dev()均為C語言擴(kuò)展模塊protoTrans中的子函數(shù)。由于設(shè)備私有協(xié)議往往是16進(jìn)制的,每一個(gè)Byte,甚至一個(gè)Byte中的每一個(gè)bit都可能有不同的含義,采用C語言處理具備更多的處理優(yōu)勢(shì),在加快處理速度的同時(shí),C語言編譯后的二進(jìn)制代碼,也克服了 python作為解釋性語言,源碼可見,對(duì)私有協(xié)議等敏感內(nèi)容保密不利的缺點(diǎn)。本發(fā)明的技術(shù)構(gòu)思為針對(duì)車載GPS協(xié)議軟轉(zhuǎn)換網(wǎng)關(guān)需要在運(yùn)行時(shí)能夠同時(shí)處理多個(gè)連接,而數(shù)據(jù)的收發(fā)并不一定是連續(xù)的,因此該軟網(wǎng)關(guān)必須采用非堵塞設(shè)計(jì)。本軟網(wǎng)關(guān)采用了 Python語言下的Twisted網(wǎng)絡(luò)編程框架,其為基于異步I/O的事件驅(qū)動(dòng)跨平臺(tái)網(wǎng)絡(luò)框架。本方案同時(shí)避免了分叉(forking)方案消耗內(nèi)存大,局限于UNIX/LINUX平臺(tái)的缺點(diǎn)。也克服了純粹的線程(threading)方案,不同連接之間共享內(nèi)存,易造成內(nèi)存變量讀寫沖突的不足,保證了該軟網(wǎng)關(guān)的可靠性與有效性。當(dāng)車載GPS設(shè)備接入軟網(wǎng)關(guān)時(shí),對(duì)私有協(xié)議數(shù)據(jù)報(bào)進(jìn)行預(yù)解析,校驗(yàn)數(shù)據(jù)報(bào),去除數(shù)據(jù)報(bào)GPRS并保存至緩存。加入數(shù)據(jù)庫管理,通過讀取數(shù)據(jù)庫比對(duì)SN序列號(hào),查詢?cè)撥囕d GPS設(shè)備是否為合法設(shè)備,并對(duì)設(shè)備進(jìn)行統(tǒng)一編號(hào),網(wǎng)絡(luò)地址IP與接口 Port登記,保證對(duì)設(shè)備的統(tǒng)一有效管理。由于每個(gè)接入的車載GPS車載設(shè)備實(shí)例化對(duì)應(yīng)的模擬設(shè)備simu_dev()對(duì)象,因而可以保證多個(gè)接入設(shè)備相互獨(dú)立,不受干擾。該實(shí)例實(shí)現(xiàn)了模擬設(shè)備與服務(wù)器之間請(qǐng)求或響應(yīng)的組包,SIP報(bào)文上發(fā)下行等方法。軟網(wǎng)關(guān)調(diào)用上述方法,使模擬設(shè)備通過UDP鏈路通信,注冊(cè)登陸到SIP服務(wù)器。之后通過向SIP服務(wù)器上發(fā)設(shè)備請(qǐng)求/響應(yīng)報(bào)文,或者向設(shè)備下發(fā)SIP服務(wù)器請(qǐng)求/響應(yīng)報(bào)文,達(dá)到完成會(huì)話的目的。以設(shè)備上發(fā)數(shù)據(jù)至SIP服務(wù)器為例在數(shù)據(jù)接收處理事件dataReceivedO退出前,該事件調(diào)用函數(shù)deferToThread O進(jìn)入延遲對(duì)象Deferred子線程中,利用函數(shù)send2Server O ,按照設(shè)定的時(shí)間間隔,定時(shí)處理私有協(xié)議報(bào)文,經(jīng)函數(shù)QCdev2ser O轉(zhuǎn)換為XML格式SIP協(xié)議報(bào)文之后發(fā)送至服務(wù)器。由于send2Server函數(shù)返回Deferred對(duì)象,并通過函數(shù)Deferred. callback()回調(diào),該函數(shù)中的阻塞行為不會(huì)阻塞dataReceived O事件的快速退出。通過設(shè)置TCP超時(shí)處理機(jī)制,開啟心跳服務(wù)包服務(wù),加強(qiáng)通信鏈路?;钅芰?,維持活動(dòng)車載GPS,軟網(wǎng)關(guān),SIP服務(wù)器之間的有效通信。同時(shí)能夠及時(shí)斷開超時(shí)TCP連接,無響應(yīng)連接等無效通信鏈路,保證通信鏈路的有效性與可靠性。軟件實(shí)現(xiàn)步驟為車載GPS設(shè)備接入?yún)f(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),軟網(wǎng)關(guān)接受私有協(xié)議數(shù)據(jù)報(bào),經(jīng)過校驗(yàn),數(shù)據(jù)庫查詢;啟動(dòng)模擬設(shè)備,注冊(cè)登陸到SIP服務(wù)器,建立會(huì)話;進(jìn)入延遲對(duì)象子線程定時(shí)對(duì)私有協(xié)議數(shù)據(jù)報(bào)文與SIP協(xié)議報(bào)文進(jìn)行相互轉(zhuǎn)換,調(diào)用模擬設(shè)備方法上發(fā)服務(wù)器或下發(fā)設(shè)備;通過模擬設(shè)備,根據(jù)會(huì)話要求要求具體實(shí)現(xiàn)各類請(qǐng)求或響應(yīng)報(bào)文中轉(zhuǎn)后上發(fā)或下發(fā),并作相應(yīng)處理的方法;會(huì)話結(jié)束,斷開通信連接,注銷模擬設(shè)備,清空緩存。本發(fā)明的有益效果主要體現(xiàn)在(I)通過轉(zhuǎn)換協(xié)議,實(shí)現(xiàn)車載GPS設(shè)備與服務(wù)器之間應(yīng)用層通信過程由SIP協(xié)議進(jìn)行統(tǒng)一的會(huì)話管理。減輕了服務(wù)器解析多種私有協(xié)議的負(fù)擔(dān),增強(qiáng)了設(shè)備與服務(wù)器之間通信質(zhì)量的穩(wěn)定性與可靠性。(2)通過軟網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換,避免了對(duì)原有GPS設(shè)備的軟硬件的重新設(shè)計(jì),將上發(fā)服務(wù)器的連接,更改為上發(fā)軟網(wǎng)關(guān)即可。
(3)通過加設(shè)車載GPS設(shè)備數(shù)據(jù)庫,對(duì)接入GPS設(shè)備進(jìn)行查驗(yàn),登記,統(tǒng)一編號(hào),有效管理GPS設(shè)備合法接入。(4)采用異步I/O的事件驅(qū)動(dòng)型網(wǎng)絡(luò)編程框架Twisted搭建系統(tǒng),保證了軟網(wǎng)關(guān)的非阻塞性與跨平臺(tái)性。(5)該軟網(wǎng)關(guān)在設(shè)計(jì)過程中,既實(shí)現(xiàn)了車載GPS設(shè)備定位私有協(xié)議數(shù)據(jù)通過轉(zhuǎn)換成SIP協(xié)議報(bào)文上傳服務(wù)器的基本功能要求,也為服務(wù)器與設(shè)備之間的多媒體會(huì)話擴(kuò)展預(yù)留了設(shè)計(jì)空間。
圖I是車載GPS協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)網(wǎng)絡(luò)框架。圖2是車載GPS設(shè)備實(shí)現(xiàn)與服務(wù)器通過SIP協(xié)議會(huì)話總流程圖。 圖3是TCP連接超時(shí)處理流程圖。圖4是軟網(wǎng)關(guān)接收GPS設(shè)備數(shù)據(jù)報(bào)后處理流程圖。圖5是軟網(wǎng)關(guān)通過模擬設(shè)備與SIP服務(wù)器建立會(huì)話流程圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步描述。參照?qǐng)Df圖5,一種車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)為設(shè)備私有協(xié)議與SIP協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),所述軟網(wǎng)關(guān)包括Dev2GateFactory對(duì)象單元,用以負(fù)責(zé)Dev2GateProtocol對(duì)象的管理,模擬設(shè)備的本地UDP端口查找,以及會(huì)話管理的方法實(shí)現(xiàn),所述會(huì)話管理包括數(shù)據(jù)庫讀寫接口 ;Dev2GateProtocol對(duì)象單元,用以負(fù)責(zé)軟網(wǎng)關(guān)與GPS設(shè)備TCP連接超時(shí)管理,數(shù)據(jù)報(bào)文解析校驗(yàn),GPS設(shè)備數(shù)據(jù)庫讀取寫入,啟動(dòng)/停止模擬設(shè)備,私有協(xié)議與SIP協(xié)議轉(zhuǎn)換,轉(zhuǎn)發(fā)設(shè)備請(qǐng)求/響應(yīng)等網(wǎng)絡(luò)處理的方法實(shí)現(xiàn);Simu_dev對(duì)象單元,用以負(fù)責(zé)實(shí)例化軟網(wǎng)關(guān)中對(duì)應(yīng)車載GPS設(shè)備的模擬設(shè)備,通過該模擬設(shè)備,實(shí)現(xiàn)設(shè)備與服務(wù)器之間會(huì)話的具體方法。本實(shí)施例的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),通過將GPS設(shè)備私有協(xié)議數(shù)據(jù)報(bào)文與服務(wù)器XML格式SIP協(xié)議報(bào)文之間的相互轉(zhuǎn)換,并轉(zhuǎn)發(fā),從而實(shí)現(xiàn)建立,完成會(huì)話的目的。(I)圖I為所述協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)與車載GPS,SIP服務(wù)器之間通信的網(wǎng)絡(luò)結(jié)構(gòu)。軟網(wǎng)關(guān)與車載GPS設(shè)備之間通信采用TCP鏈路通信,保證鏈路質(zhì)量可靠性,數(shù)據(jù)報(bào)文格式為車載GPS設(shè)備私有協(xié)議格式;軟網(wǎng)關(guān)與服務(wù)器之間由于在應(yīng)用層上采用SIP協(xié)議通信,具有握手機(jī)制來保證對(duì)鏈路質(zhì)量的控制,所以在傳輸層上采用UDP鏈路進(jìn)行通信,該過程數(shù)據(jù)報(bào)文為SIP協(xié)議報(bào)文。在此網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,軟網(wǎng)關(guān)通過轉(zhuǎn)發(fā)經(jīng)過轉(zhuǎn)換協(xié)議的報(bào)文,達(dá)到建立,完成車載GPS設(shè)備與SIP服務(wù)器之間會(huì)話的目的。 (2)所述車載GPS設(shè)備通過本發(fā)明協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)與SIP服務(wù)器建立,完成會(huì)話。本次流程首次連接請(qǐng)求由車載GPS設(shè)備發(fā)起,如圖2總流程圖所示其步驟為2. I)所述基于Twsited網(wǎng)絡(luò)框架的軟網(wǎng)關(guān)啟動(dòng)后,調(diào)用reactor. IistenTCP()函數(shù),實(shí)例化ServerFactory類對(duì)象Dev2GateFactory初始化軟網(wǎng)關(guān)資源,監(jiān)聽TCP端口,調(diào)用reactor, run O ,準(zhǔn)備網(wǎng)絡(luò)事件處理。
2. 2)當(dāng)有車載GPS設(shè)備通過TCP接入時(shí),軟網(wǎng)關(guān)實(shí)例化Protocol類對(duì)象Dev2GateProtoco I,對(duì)網(wǎng)絡(luò)連接進(jìn)行處理啟動(dòng)網(wǎng)絡(luò)事件處理。2. 3)建立TCP連接后,觸發(fā)connectionMade O事件,查找空閑UDP端口,保存TCP報(bào)文時(shí)間,啟動(dòng)TCP超時(shí)處理函數(shù)handle_Tcptimer O2. 4)軟網(wǎng)關(guān)接收到GPS設(shè)備數(shù)據(jù)報(bào)文,觸發(fā)dataReceivedO事件,開始對(duì)報(bào)文進(jìn)行數(shù)據(jù)庫注冊(cè)校驗(yàn),解析該私有協(xié)議,啟動(dòng)并進(jìn)入Deferred子線程,定時(shí)私對(duì)有協(xié)議報(bào)文進(jìn)行SIP協(xié)議轉(zhuǎn)換。2. 5)判斷該GPS設(shè)備是否為首次接入軟網(wǎng)關(guān),若是,則實(shí)例化模擬設(shè)備simu_dev O對(duì)象,啟動(dòng)模擬設(shè)備服務(wù),調(diào)用相應(yīng)方法,注冊(cè)登陸SIP服務(wù)器,建立會(huì)話。若否,則跳過啟動(dòng)注冊(cè)步驟。 2. 6)模擬設(shè)備啟動(dòng)注冊(cè)之后,Deferred子線程利用對(duì)應(yīng)的模擬設(shè)備simu_dev()實(shí)例中的具體方法,上發(fā)已轉(zhuǎn)換的SIP報(bào)文,處理設(shè)備對(duì)服務(wù)器的響應(yīng)與請(qǐng)求。2. 7)軟網(wǎng)關(guān)接收SIP服務(wù)器下發(fā)響應(yīng)/請(qǐng)求數(shù)據(jù)報(bào)文,并處理。判斷是否需要將服務(wù)器下發(fā)報(bào)文轉(zhuǎn)發(fā)至設(shè)備。若是,則通過模擬設(shè)備對(duì)應(yīng)實(shí)例調(diào)用轉(zhuǎn)換模塊中的Qcserfdev O函數(shù)將SIP報(bào)文轉(zhuǎn)換為私有協(xié)議報(bào)文,并下發(fā)。若否,則等待dataReceivedO事件觸發(fā),處理后續(xù)數(shù)據(jù)報(bào)文。2.8)服務(wù)器報(bào)文已經(jīng)轉(zhuǎn)換,下發(fā)后,判斷會(huì)話是否結(jié)束。若是,則啟動(dòng)connectionLost ()事件斷開相應(yīng)連接,清理緩存。若否,則等待下次dataReceived O事件觸發(fā),處理后續(xù)數(shù)據(jù)報(bào)文。(3)圖3為TCP超時(shí)處理函數(shù)handle_Tcptimer()流程圖,其用于,定時(shí)判斷TCP連接是否超時(shí),并處理。其在TCP連接?;顧C(jī)制,模擬設(shè)備心跳包機(jī)制中都有應(yīng)用。具體描述為,每次接收到TCP報(bào)文或系統(tǒng)特定時(shí)間時(shí),系統(tǒng)均會(huì)將當(dāng)前時(shí)間保存當(dāng)TCP報(bào)文更新時(shí)間。然后以timeout為時(shí)間間隔,定時(shí)循環(huán)啟動(dòng)handle_Tcptimer()超時(shí)處理函數(shù),所述timeout為預(yù)定義TCP連接超時(shí)的時(shí)間間隔。每次校驗(yàn)過程為3. I)獲取當(dāng)前系統(tǒng)時(shí)間now。3. 2) now減去最新TCP報(bào)文時(shí)間比較是否小于時(shí)間間隔timeout。若否,貝U判斷TCP連接超時(shí),啟動(dòng)connectionLost O事件斷開鏈接。3. 3)若是則不做任何處理,退出處理程序。系統(tǒng)等待timeout大小時(shí)間間隔后,將再次調(diào)用handle_Tcptimer O進(jìn)行超時(shí)判斷處理。(4)當(dāng)存在車載GPS設(shè)備接入軟網(wǎng)關(guān)后,系統(tǒng)實(shí)例化Dev2GateProtocol對(duì)象,啟動(dòng)網(wǎng)絡(luò)事件處理。其中重要流程為當(dāng)接收到GPS數(shù)據(jù)報(bào)后,觸發(fā)系統(tǒng)dataReceivedO事件,開始對(duì)報(bào)文進(jìn)行處理的過程。所述步驟如圖4所示4. I)刷新當(dāng)前系統(tǒng)時(shí)間為TCP連接活動(dòng)標(biāo)記,保存最新TCP報(bào)文時(shí)間,對(duì)本次連接進(jìn)行保活處理。4. 2)調(diào)用函數(shù)QCpredev2ser O對(duì)GPS私有協(xié)議數(shù)據(jù)報(bào)文進(jìn)行預(yù)處理,返回設(shè)備序列號(hào)sn與經(jīng)過預(yù)處理的私有協(xié)議數(shù)據(jù)報(bào)文data。所述序列號(hào)sn為廠商自行定義編號(hào)。所述QCpredev2ser O為擴(kuò)展模塊protoTrans中的子函數(shù),利用C語言編寫,快速對(duì)GPS報(bào)文進(jìn)行了類型判斷,格式處理,格式轉(zhuǎn)換,報(bào)文X0R,CRC檢驗(yàn),去除GPRS頭等處理。4. 3)軟網(wǎng)關(guān)系統(tǒng)判斷sn序列號(hào)是否已經(jīng)經(jīng)過設(shè)備數(shù)據(jù)庫校驗(yàn)。如果是,則該設(shè)備合法,且并非首次接入,直接將預(yù)處理后數(shù)據(jù)報(bào)文data保存到dBuff緩存中。4.4)如果否,則該sn序列號(hào)設(shè)備首次接入軟網(wǎng)關(guān)系統(tǒng),必須進(jìn)行數(shù)據(jù)庫查詢比對(duì),判斷是否合法。如果該sn序列號(hào)未在設(shè)備數(shù)據(jù)庫中找到,則判斷本次GPS設(shè)備接入非法,系統(tǒng)將斷開連接,并清空對(duì)應(yīng)緩存數(shù)據(jù)。4. 5)如果該sn序列號(hào)在數(shù)據(jù)庫中找到,則其為在設(shè)備數(shù)據(jù)庫中注冊(cè)備案過的合法設(shè)備編號(hào)。軟網(wǎng)關(guān)會(huì)將本次設(shè)備接入的網(wǎng)絡(luò)IP與端口 Port進(jìn)行登記,寫入數(shù)據(jù)庫,并讀取其注冊(cè)的統(tǒng)一編號(hào),作為系統(tǒng)內(nèi)部識(shí)別編號(hào)。然后將預(yù)處理后的數(shù)據(jù)報(bào)文data保存到dBuff緩存中。4. 6)通過回調(diào)函數(shù) Deferred, callback(),在 deferToThread 線程中,調(diào)用函數(shù)send2Server()對(duì)緩存中的數(shù)據(jù)報(bào)文進(jìn)行非阻塞定時(shí)處理,并嘗試調(diào)用對(duì)應(yīng)的模擬設(shè)備方法,上發(fā)報(bào)文。若此時(shí)對(duì)應(yīng)模擬設(shè)備未啟動(dòng),則函數(shù)返回,并在設(shè)定時(shí)間內(nèi)再次嘗試調(diào)用。 完成以4. I廣4. 6)流程后,系統(tǒng)完成完成對(duì)私有車載GPS設(shè)備協(xié)議數(shù)據(jù)接收處理,但仍然需要通過啟動(dòng)對(duì)應(yīng)的模擬設(shè)備實(shí)例,調(diào)用其中的具體方法來實(shí)現(xiàn)會(huì)話注冊(cè),報(bào)文的轉(zhuǎn)發(fā)等具體功能。(5)在完成(4)中的流程處理后,GPS設(shè)備私有協(xié)議數(shù)據(jù)處理結(jié)束,需要開始建立與SIP服務(wù)器會(huì)話,完成通信會(huì)話任務(wù)。由于目前大多數(shù)GPS設(shè)備與SIP服務(wù)器通信目的主要在在上傳私有協(xié)議封裝的定位數(shù)據(jù)。因此圖5所示流程,通過實(shí)現(xiàn)該基本功能,從而演示本發(fā)明在該環(huán)節(jié)的工作機(jī)制5. I)系統(tǒng)判斷該車載GPS設(shè)備是否為首次進(jìn)行報(bào)文協(xié)議轉(zhuǎn)換發(fā)送。如果否,說明之前已經(jīng)注冊(cè)啟動(dòng)相應(yīng)的模擬設(shè)備Simu_deV()類對(duì)象實(shí)例,則跳過注冊(cè)啟動(dòng)與SIP服務(wù)器會(huì)話的流程。如果是,則必須重新實(shí)例化對(duì)應(yīng)的模擬設(shè)備Simu_deV()類對(duì)象,注冊(cè)并啟動(dòng)服務(wù)simudev. start O,通過該模擬設(shè)備實(shí)例模擬GPS設(shè)備與SIP服務(wù)器完成會(huì)話通信任務(wù)。5. 2)實(shí)例化模擬端點(diǎn)對(duì)象rvsip_endpoint,用于上發(fā)服務(wù)器設(shè)備請(qǐng)求,或者服務(wù)器下發(fā)指令。5. 3)模擬設(shè)備服務(wù)啟動(dòng)后,將調(diào)用reactor. IistenUDPO方法,監(jiān)聽的圖2所示,
2.3)步驟中查找到的UDP端口,以便接收或上發(fā)服務(wù)器報(bào)文。5. 4)實(shí)例化會(huì)話注冊(cè)請(qǐng)求rvsip_request ("REGISTER"...),通過調(diào)用該實(shí)例中的req. IoginO方法,將相應(yīng)驗(yàn)證密文,模擬設(shè)備網(wǎng)絡(luò)IP,Μ)Ρ端口等信息打包為XML格式SIP協(xié)議注冊(cè)請(qǐng)求報(bào)文。然后通過rvsip_endpoint實(shí)例中的deliverRequest O方法向指定SIP服務(wù)器發(fā)送該報(bào)文。5. 5)模擬設(shè)備發(fā)送注冊(cè)報(bào)文后,等待SIP服務(wù)器響應(yīng)。如果未在規(guī)定時(shí)間內(nèi)收到注冊(cè)成功服務(wù)器響應(yīng),則繼續(xù)重發(fā)注冊(cè)報(bào)文,直到重發(fā)次數(shù)超過3次,停止重發(fā),啟動(dòng)connectionLost O事件斷開連接,關(guān)閉本次會(huì)話;如果在規(guī)定時(shí)間內(nèi)收到注冊(cè)成功服務(wù)器響應(yīng)200 (OK),則會(huì)話注冊(cè)成功。模擬設(shè)備與SIP服務(wù)器建立會(huì)話,開啟心跳包,維持GPS,軟網(wǎng)關(guān),服務(wù)器三者之間通信。5. 6)模擬設(shè)備與SIP服務(wù)器會(huì)話注冊(cè)成功后,數(shù)據(jù)接收處理流程4. 6)中的deferToThread 線程中的 send2Server()函數(shù),利用 sleep O 函數(shù),定時(shí)調(diào)用 QCdev2ser()子函數(shù)將預(yù)處理數(shù)據(jù)緩存dBuff中最舊的請(qǐng)求/響應(yīng)數(shù)據(jù)報(bào)data轉(zhuǎn)換成XML格式的SIP報(bào)文,起到控制數(shù)據(jù)報(bào)文處理、上發(fā)頻率,預(yù)防接收數(shù)據(jù)過快導(dǎo)致報(bào)文丟失的作用。5. 6)完成協(xié)議轉(zhuǎn)換后,在Send2Server()函數(shù)中可以成功調(diào)用已經(jīng)啟動(dòng)注冊(cè)的模擬設(shè)備實(shí)例中的方法sendO向服務(wù)器發(fā)送經(jīng)過轉(zhuǎn)換的SIP報(bào)文。5. 7)發(fā)送數(shù)據(jù)報(bào)文后,相應(yīng)模擬設(shè)備實(shí)例等待SIP服務(wù)器響應(yīng)。如果未在規(guī)定時(shí)間內(nèi)收到服務(wù)器響應(yīng),則重新調(diào)用sendO方法重發(fā)SIP數(shù)據(jù)報(bào)文,若重發(fā)次數(shù)超過3次,則停止重發(fā),啟動(dòng)connectionLost O事件斷開連接,關(guān)閉本次會(huì)話;如果在規(guī)定時(shí)間內(nèi)收到服務(wù)器響應(yīng)200 (0K),則表明SIP數(shù)據(jù)報(bào)文發(fā)送成功,本次會(huì)話的協(xié)議轉(zhuǎn)換任務(wù)完成。為了能夠?qū)崿F(xiàn)更豐富的會(huì)話控制功能,本發(fā)明還預(yù)留了針對(duì)SIP服務(wù)器與GPS設(shè)備之間其他響應(yīng)或者請(qǐng)求會(huì)話處理的設(shè)計(jì)空間。只 需要在模擬設(shè)備Simu_deV()類對(duì)象實(shí)例中加入相應(yīng)響應(yīng)或請(qǐng)求的處理方法并調(diào)用即可,從而保證了系統(tǒng)的擴(kuò)展性。
權(quán)利要求
1.一種車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)為設(shè)備私有協(xié)議與SIP協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),所述軟網(wǎng)關(guān)包括 Dev2GateFactory對(duì)象單元,用以負(fù)責(zé)Dev2GateProtocol對(duì)象的管理,模擬設(shè)備的本地UDP端口查找,以及會(huì)話管理的方法實(shí)現(xiàn),所述會(huì)話管理包括數(shù)據(jù)庫讀寫接口 ; Dev2GateProtocol對(duì)象單元,用以負(fù)責(zé)軟網(wǎng)關(guān)與GPS設(shè)備TCP連接超時(shí)管理,數(shù)據(jù)報(bào)文解析校驗(yàn),GPS設(shè)備數(shù)據(jù)庫讀取寫入,啟動(dòng)/停止模擬設(shè)備,私有協(xié)議與SIP協(xié)議轉(zhuǎn)換,轉(zhuǎn)發(fā)設(shè)備請(qǐng)求/響應(yīng)等網(wǎng)絡(luò)處理的方法實(shí)現(xiàn); Simu_dev對(duì)象單元,用以負(fù)責(zé)實(shí)例化軟網(wǎng)關(guān)中對(duì)應(yīng)車載GPS設(shè)備的模擬設(shè)備,通過該模擬設(shè)備,實(shí)現(xiàn)設(shè)備與服務(wù)器之間會(huì)話的具體方法。
2.如權(quán)利要求I所述的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述軟網(wǎng)關(guān)接收到GPS設(shè)備私有數(shù)據(jù)報(bào)文后,觸發(fā)dataReceivedO事件,實(shí)現(xiàn)所述數(shù)據(jù)報(bào)文解析校驗(yàn)方法首先調(diào)用QCpredeV2ser O函數(shù)進(jìn)行預(yù)解析處理,對(duì)報(bào)文進(jìn)行校驗(yàn),并解析出設(shè)備SN序列號(hào)與去除GPRS頭的數(shù)據(jù)報(bào)data ;所述設(shè)備SN序列號(hào)由廠家自由定義,并事先注冊(cè)到軟網(wǎng)關(guān)設(shè)備數(shù)據(jù)庫中; 軟網(wǎng)關(guān)讀取軟網(wǎng)關(guān)設(shè)備數(shù)據(jù)庫,檢索該設(shè)備SN序列號(hào)是否合法,并登記接入GPS設(shè)備網(wǎng)絡(luò)信息;所述Dev2GateProtocol對(duì)象單元中,在所述dataReceived O事件里,實(shí)現(xiàn)私有協(xié)議與SIP協(xié)議報(bào)文轉(zhuǎn)換經(jīng)預(yù)解析和數(shù)據(jù)庫查詢之后的合法GPS設(shè)備,軟網(wǎng)關(guān)會(huì)將其需要上發(fā)至服務(wù)器的的TCP報(bào)文數(shù)據(jù),保存到列表緩存dbuff中;調(diào)用函數(shù)deferToThreadO進(jìn)入延遲對(duì)象Deferred子線程中,按照設(shè)定的時(shí)間間隔,從列表中讀取保存的私有協(xié)議數(shù)據(jù),經(jīng)函數(shù)QCdeWserO轉(zhuǎn)換為SIP協(xié)議報(bào)文之后發(fā)送至服務(wù)器; 所述Dev2GateProtocol對(duì)象單元中,TCP?;顧C(jī)制是每次收到GPS設(shè)備發(fā)送的TCP數(shù)據(jù)報(bào)文則更新報(bào)文時(shí)間,定時(shí)啟動(dòng)TCP超時(shí)處理程序,檢查當(dāng)前時(shí)間與最新報(bào)文時(shí)間間隔是否超時(shí),若超時(shí)則軟網(wǎng)關(guān)主動(dòng)斷開與設(shè)備的TCP連接。
3.如權(quán)利要求I或2所述的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述Dev2GateProtocol對(duì)象單元中,在每個(gè)設(shè)備第一次接入時(shí),注冊(cè)啟動(dòng)模擬設(shè)備simu dev O對(duì)象實(shí)例;每個(gè)GPS設(shè)備對(duì)應(yīng)一個(gè)模擬設(shè)備實(shí)例,通過該實(shí)例經(jīng)過UDP鏈路向SIP服務(wù)器發(fā)送請(qǐng)求或響應(yīng),同時(shí)也可以根據(jù)需要將服務(wù)器的請(qǐng)求與響應(yīng)轉(zhuǎn)發(fā)給GPS設(shè)備;所述模擬設(shè)備實(shí)例中,實(shí)例化sip. Base類對(duì)象rvsip_endpoint,模擬設(shè)備端點(diǎn),用于上發(fā)服務(wù)器設(shè)備請(qǐng)求,或者服務(wù)器下發(fā)指令;實(shí)例化sip. Request類對(duì)象rvsip_request,用于組成上發(fā)服務(wù)器的相應(yīng)SIP協(xié)議請(qǐng)求報(bào)文,模擬設(shè)備還通過開啟心跳包,定時(shí)向SIP服務(wù)器發(fā)送從心跳報(bào)文,保持模擬設(shè)備與SIP服務(wù)器之間的UDP鏈路通信會(huì)話的有效性,模擬設(shè)備在接收到服務(wù)器下發(fā)GPS設(shè)備指令時(shí),將調(diào)用Qcserfdev O函數(shù),將SIP協(xié)議報(bào)文解析為設(shè)備可識(shí)別的私有協(xié)議報(bào)文,并下發(fā)。
4.如權(quán)利要求I或2所述的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)還包括TCP超時(shí)處理子單元,如出現(xiàn)TCP連接超時(shí),接入設(shè)備未注冊(cè),數(shù)據(jù)報(bào)文非法或會(huì)話無響應(yīng),則軟網(wǎng)關(guān)將觸發(fā)connectionLost O事件,執(zhí)行關(guān)閉TCP連接,刪除模擬設(shè)備,清空緩存操作。
5.如權(quán)利要求2所述的車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),其特征在于所述私有協(xié)議數(shù)據(jù)報(bào)文預(yù)處理函數(shù)QCpredev2ser O,私有協(xié)議數(shù)據(jù)報(bào)文轉(zhuǎn)換XML格式SIP協(xié)議數(shù)據(jù)報(bào)文函數(shù)QCdev2ser O,SIP協(xié)議報(bào)文轉(zhuǎn)換成私有協(xié)議報(bào)文函數(shù)Qcser2dev O均為C語言擴(kuò)展模塊 protoTrans中的子函數(shù)。
全文摘要
一種車載GPS設(shè)備協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān),包括Dev2GateFactory對(duì)象單元,用以負(fù)責(zé)Dev2GateProtocol對(duì)象的管理,模擬設(shè)備的本地UDP端口查找;Dev2GateProtocol對(duì)象單元,用以負(fù)責(zé)軟網(wǎng)關(guān)與GPS設(shè)備TCP連接超時(shí)管理,數(shù)據(jù)報(bào)文解析校驗(yàn),GPS設(shè)備數(shù)據(jù)庫讀取寫入,啟動(dòng)/停止模擬設(shè)備,私有協(xié)議與SIP協(xié)議轉(zhuǎn)換,轉(zhuǎn)發(fā)設(shè)備請(qǐng)求/響應(yīng)等網(wǎng)絡(luò)處理的方法實(shí)現(xiàn);Simu_dev對(duì)象單元,用以負(fù)責(zé)實(shí)例化軟網(wǎng)關(guān)中對(duì)應(yīng)注冊(cè)車載GPS設(shè)備的模擬設(shè)備,通過該模擬設(shè)備,實(shí)現(xiàn)設(shè)備與服務(wù)器之間會(huì)話的具體方法。本發(fā)明對(duì)接入設(shè)備與通信會(huì)話進(jìn)行統(tǒng)一有效的管理,加強(qiáng)通信會(huì)話的統(tǒng)一性,有效性,可擴(kuò)展性。
文檔編號(hào)H04L29/06GK102724183SQ20121017485
公開日2012年10月10日 申請(qǐng)日期2012年5月28日 優(yōu)先權(quán)日2012年5月28日
發(fā)明者孟利民, 彭宏, 徐志江, 王勝 申請(qǐng)人:杭州普諾科技有限公司, 浙江工業(yè)大學(xué)