車載obd行車狀態(tài)檢測(cè)設(shè)備與系統(tǒng)后臺(tái)的通信技術(shù)方案的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及到汽車電子領(lǐng)域的車載OBD診斷接口及其相關(guān)設(shè)備的設(shè)計(jì)與制造。
【背景技術(shù)】
[0002]隨著人們生活水平的提高,車輛已經(jīng)逐漸成為了廣大城市、農(nóng)村居民必不可少的出行交通工具。然而,車輛日常運(yùn)行損耗累積到一定程度,可能會(huì)導(dǎo)致車輛高速行駛過程的故障,致使無法正常行駛、甚至造成重大的交通事故,給人們帶來財(cái)產(chǎn)或生命的損失,嚴(yán)重影響當(dāng)事人接下來的生活。因此,如何實(shí)時(shí)監(jiān)測(cè)車輛運(yùn)行狀態(tài)數(shù)據(jù),并根據(jù)歷史數(shù)據(jù)對(duì)車輛狀態(tài)進(jìn)行綜合評(píng)估,以便廣大車主及時(shí)對(duì)進(jìn)行車輛維修、日常保養(yǎng),防患于未然,顯得很有必要。當(dāng)前極少數(shù)的高價(jià)位高檔車輛在出廠時(shí),雖然具有內(nèi)置的車輛狀態(tài)數(shù)據(jù)實(shí)時(shí)跟裝置,但也僅于汽車廠家的售后服務(wù)功能,車輛狀態(tài)實(shí)時(shí)獲取功能較差,還無法滿足車主對(duì)車身狀況的及時(shí)把控。此外,其他廣大車主仍在對(duì)車輛狀態(tài)盲然不知的情況下駕車行駛,隱藏著巨大安全隱患。
[0003]目前,車輛0BD(0n Board Diagrams,0BD)診斷接口是獲得車輛內(nèi)置狀態(tài)監(jiān)測(cè)數(shù)據(jù)的唯一途徑,該接口是汽車工業(yè)的行業(yè)標(biāo)準(zhǔn),用于汽車維修過程的汽車故障檢測(cè)。實(shí)際上,任何實(shí)現(xiàn)汽車OBD接口標(biāo)準(zhǔn)的設(shè)備均可通過OBD接口向車輛的行車電腦(ElectronicControl Unit,E⑶)查詢其監(jiān)測(cè)到的車輛狀態(tài)數(shù)據(jù)。很顯然,汽車OBD設(shè)備獲得的大量數(shù)據(jù),又需要持久性、不間斷地保存到一個(gè)存儲(chǔ)器上,以便車主查詢歷史的監(jiān)測(cè)數(shù)據(jù)。隨著大規(guī)模數(shù)據(jù)存儲(chǔ)技術(shù)和服務(wù)器集群技術(shù)的發(fā)展,云存儲(chǔ)成了數(shù)據(jù)持久性、不間斷保存的技術(shù)方案。當(dāng)前,基于手機(jī)通信技術(shù)和Wifi的移動(dòng)網(wǎng)絡(luò)技術(shù),推動(dòng)了移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來,使得人們隨時(shí)隨地可對(duì)網(wǎng)絡(luò)資源的獲取和共享成了可能,也使得數(shù)據(jù)監(jiān)測(cè)設(shè)備可以將其監(jiān)測(cè)的數(shù)據(jù)實(shí)時(shí)地發(fā)送到系統(tǒng)后臺(tái),存儲(chǔ)在云端數(shù)據(jù)服務(wù)器上,實(shí)現(xiàn)多種移動(dòng)終端設(shè)備的數(shù)據(jù)共享和服務(wù)。在云儲(chǔ)存計(jì)算背景下,移動(dòng)互聯(lián)網(wǎng)技術(shù)的成熟會(huì)對(duì)汽車監(jiān)測(cè)數(shù)據(jù)的云端存儲(chǔ)、分析、共享產(chǎn)生巨大推動(dòng)作用。
[0004]因此,近年來,基于車載OBD接口的各種車輛狀態(tài)檢測(cè)設(shè)備大量的涌現(xiàn),但其與系統(tǒng)后臺(tái)之間缺乏統(tǒng)一的通信接口,導(dǎo)致不同OBD設(shè)備廠家之間的設(shè)備互不兼容,系統(tǒng)后臺(tái)無法同時(shí)與多種OBD設(shè)備之間進(jìn)行通信,額外增加了實(shí)際中的費(fèi)用開銷。當(dāng)前云存儲(chǔ)、移動(dòng)互聯(lián)時(shí)代下,本發(fā)明提出了系統(tǒng)后臺(tái)與OBD汽車狀態(tài)檢測(cè)設(shè)備通信的技術(shù)方案,該方案綜合考慮了系統(tǒng)后臺(tái)與OBD設(shè)備檢測(cè)設(shè)備之間的消息收發(fā)特點(diǎn),實(shí)現(xiàn)簡(jiǎn)單高效,并具有統(tǒng)一的通信接口,便于不同廠家OBD設(shè)備與系統(tǒng)后臺(tái)之間的兼容性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出了系統(tǒng)后臺(tái)與OBD車輛狀態(tài)檢測(cè)設(shè)備通信的技術(shù)方案,采用了消息事件機(jī)制,實(shí)現(xiàn)OBD車輛狀態(tài)檢測(cè)設(shè)備與系統(tǒng)后臺(tái)之間的統(tǒng)一接口。
[0006]本發(fā)明定義了設(shè)備與系統(tǒng)后臺(tái)之間的數(shù)據(jù)交換格式,設(shè)備接收到的數(shù)據(jù)是一些設(shè)備配置數(shù)據(jù)以及其他的操作指令,其數(shù)據(jù)格式定義,如圖1所示。
[0007]其中數(shù)據(jù)類型為8位二進(jìn)制數(shù)據(jù),其中最高位表示是否返回指令的執(zhí)行結(jié)果,其余7位標(biāo)識(shí)數(shù)據(jù)的類別。若數(shù)據(jù)類型的最高位是1,則數(shù)據(jù)部分的前I個(gè)字節(jié)為系統(tǒng)后臺(tái)指令的標(biāo)識(shí)碼,該標(biāo)識(shí)碼是一個(gè)隨機(jī)數(shù),從而數(shù)據(jù)長度-1是系統(tǒng)后臺(tái)指令執(zhí)行結(jié)果的數(shù)據(jù)長度。
[0008]而設(shè)備向后臺(tái)發(fā)送數(shù)據(jù)的格式如圖2所示,其中數(shù)據(jù)類型為8位二進(jìn)制數(shù)據(jù),其中最高位表示是否系統(tǒng)后臺(tái)指令的執(zhí)行結(jié)果,其余7位標(biāo)識(shí)數(shù)據(jù)的類別。若數(shù)據(jù)類型的最高位是1,則數(shù)據(jù)部分的前I個(gè)字節(jié)為系統(tǒng)后臺(tái)指令的標(biāo)識(shí)碼,該標(biāo)識(shí)碼是一個(gè)隨機(jī)數(shù),從而數(shù)據(jù)長度-1是系統(tǒng)后臺(tái)指令執(zhí)行結(jié)果的數(shù)據(jù)長度。
[0009]本發(fā)明所述的系統(tǒng)后臺(tái)與OBD設(shè)備之間的通訊方案,包括“注冊(cè)設(shè)備”、“發(fā)送數(shù)據(jù)”、“接收數(shù)據(jù)”,“防吊保持”等部分,現(xiàn)在分述如下:
[0010]⑴注冊(cè)設(shè)備
[0011]本發(fā)明所述車載OBD行車狀態(tài)檢測(cè)設(shè)備系統(tǒng)注冊(cè)的處理流程如圖3所示,按以下的三個(gè)步驟執(zhí)行。
[0012]第一步:設(shè)備加電啟動(dòng)后,將主動(dòng)連接系統(tǒng)后臺(tái)的服務(wù)地址,并將設(shè)備標(biāo)識(shí)發(fā)送到系統(tǒng)后臺(tái)。
[0013]第二步:系統(tǒng)后臺(tái),對(duì)設(shè)備身份進(jìn)行驗(yàn)證。若驗(yàn)證通過維持TCP連接,否則斷開建立的TCP連接。
[0014]第三步:設(shè)備注冊(cè)完成。
[0015]⑵接收數(shù)據(jù)
[0016]本發(fā)明所述車載OBD行車狀態(tài)檢測(cè)設(shè)備接收數(shù)據(jù)的處理流程如圖4所示,即按以下的幾個(gè)步驟執(zhí)行。
[0017]第一步:當(dāng)設(shè)備檢測(cè)到通信模塊產(chǎn)生的數(shù)據(jù)達(dá)到中斷信號(hào)后,主控芯片執(zhí)行相應(yīng)的中斷處理函數(shù)。
[0018]第二步:在主控芯片的中斷處理函數(shù)中,調(diào)用數(shù)據(jù)接收函數(shù),將通信模塊接收到數(shù)據(jù)保存到接收數(shù)據(jù)緩沖區(qū)。
[0019]第三步:由接收數(shù)據(jù)緩沖區(qū)第二個(gè)字節(jié)的值,獲得有效數(shù)據(jù)的長度。
[0020]第三步:判斷接收數(shù)據(jù)緩沖第一個(gè)節(jié)字的最高位是否為I。若為1,則讀取接收數(shù)據(jù)緩沖的第三個(gè)字節(jié)數(shù)據(jù),將其保存成系統(tǒng)指令代碼變量的值,以便將返回些次指令的執(zhí)行結(jié)果,再從接收緩沖區(qū)中從第四個(gè)字節(jié)及其以后余下的字節(jié)中讀取接收的數(shù)據(jù)。否則,直接從接收緩沖區(qū)中第三個(gè)字節(jié)及其以后余下的字節(jié)中讀取接收的數(shù)據(jù)。
[0021]第四步:忽略接收數(shù)據(jù)緩沖第一個(gè)字節(jié)的最高位,判斷接收數(shù)據(jù)的類型。
[0022]第五步:根據(jù)接收的數(shù)據(jù)類型及其數(shù)據(jù),執(zhí)行相應(yīng)的操作。
[0023]第六步:接收數(shù)據(jù)完成。
[0024](3)發(fā)送數(shù)據(jù)
[0025]本發(fā)明所述設(shè)備向系統(tǒng)后臺(tái)發(fā)送數(shù)據(jù),其執(zhí)行流程如圖5,需經(jīng)過以下幾個(gè)步驟完成發(fā)送數(shù)據(jù)幀的封裝和發(fā)送。
[0026]第一步:確定發(fā)送數(shù)據(jù)的類型,設(shè)置數(shù)據(jù)發(fā)送緩沖中第一個(gè)字節(jié),即數(shù)據(jù)類型字節(jié)相應(yīng)的值。
[0027]第二步:檢查要發(fā)送的數(shù)據(jù)是否系統(tǒng)后臺(tái)指令的返回?cái)?shù)據(jù)。
[0028]第三步:若要發(fā)送的數(shù)據(jù)是系統(tǒng)后臺(tái)指令的返回?cái)?shù)據(jù),則設(shè)置數(shù)據(jù)類型字節(jié)最高位的值為1,并將系統(tǒng)后臺(tái)指令代碼拷貝到發(fā)送數(shù)據(jù)緩沖的第三個(gè)節(jié)字,再將要發(fā)送的數(shù)據(jù)拷貝到余下的發(fā)送數(shù)據(jù)緩沖中。否則,將數(shù)據(jù)類型字節(jié)的最高位設(shè)置為0,并把要發(fā)送的數(shù)據(jù)直接拷貝到發(fā)送數(shù)據(jù)緩沖的第三個(gè)字節(jié)及其以后的字節(jié)中。
[0029]第四步:計(jì)算發(fā)送數(shù)據(jù)數(shù)據(jù)緩沖中數(shù)據(jù)位的長度,并將長度值保存到數(shù)據(jù)發(fā)送緩沖的第二個(gè)字節(jié)中,完成發(fā)送數(shù)據(jù)幀的封裝。
[0030]第五步:調(diào)用數(shù)據(jù)發(fā)送函數(shù),將封裝好的發(fā)送數(shù)據(jù)幀發(fā)送到系統(tǒng)后臺(tái)。
[0031]第六步:發(fā)送數(shù)據(jù)完成。
[0032](4)防吊保持
[0033]本發(fā)明所涉及的車載OBD行車狀態(tài)檢測(cè)設(shè)備,在正常工作中需要定時(shí)向系統(tǒng)后臺(tái)發(fā)送防吊消息,來維持連接的活動(dòng)狀態(tài)。防吊數(shù)據(jù)的幀結(jié)構(gòu)是設(shè)備發(fā)送數(shù)據(jù)幀的特殊形式,是一個(gè)僅包含數(shù)據(jù)類型字節(jié)的數(shù)據(jù),其封裝步驟如下:
[0034]第一步:設(shè)置一個(gè)字節(jié)大小的防吊數(shù)據(jù)發(fā)送緩沖區(qū)。
[0035]第二步:將防吊數(shù)