平臺如何應答——關於JT/T808協議

前兩篇也說明了一些應答的相關內容,對於剛接觸的開發者來講恐怕仍是不太容易理解,這裏專門列舉一個篇幅來說解如何針對終端設備上報的信息進行應答。數據庫

嚴格來說,若是不該答,終端設備會判別爲服務平臺斷開鏈接,就會重複發送相同的信息直到平臺應答。spa

應答有兩種:註冊應答和通用應答。code

註冊應答

顧名思義,註冊應答是指在設備初次鏈接平臺時會發送註冊信息,消息id通常爲:0x0100具體參考部標協議截圖以下:server


(圖一)blog

應答的消息id爲:0x8100具體參考部標協議截圖以下:開發


(圖二)rem

值得一提是,上圖的內容其實不夠全面,完整的應答格式應該包含部標協議中的消息頭,消息頭必須存在於每一條消息中,無論是終端發給平臺仍是平臺發給終端,都必須包含消息頭。字符串

舉例,若是平臺收到一條終端發來的註冊消息以下:it

7e0100002c01918051355000110000000037303131325345472d39383838470000000000000000000000303531333535300130353133353530167eclass

咱們該怎麼來分析這條消息呢,首先,挑出消息標示,也就是首尾的7e0100002c0191805135500011這一段是消息頭,標準的字符串長度是:4(消息ID)+4(消息體屬性)+12(終端手機號)+4(消息流水號)=24個字符,12個字節。拆分一下就是這樣:0100`002c0191805135500011`

剩下的就是終端註冊時攜帶的具體內容,能夠參考(圖一)去分拆消息。

如何應答這條消息呢?其實也是比較簡單的,消息頭能夠直接複用,也就是把終端發送來的消息頭直接截取出來使用,加上圖二中的信息而後加上校驗碼,首位拼接上7e便可。

應答流水號:能夠直接爲0000

結果:若是設備號存在於平臺則應答:00或者03若是設備號不存在或者平臺不容許不存在於平臺數據庫的設備鏈接則映帶04或者選擇不該答。具體看需求策略。

鑑權碼:當應答結果03時無需填寫,01時填寫,設備接收後會保存,下次註冊時攜帶。

綜合下來就是這樣:7e`810000030191805135500001001103b5`7e

須要注意的有兩點:

  • 1 .在封裝完消息後,還未拼接首位的7e時要對消息進行一次轉義,具體就是把消息中全部的7e替換爲7d02

    全部的7d替換爲7d01

  • 2.全部的消息發送完畢後服務端不要當即關閉鏈接(server->close()),這實際上是個常識爲題,obd爲長鏈接狀態,關閉後obd會不停觸發註冊信息。

平臺通用應答(0x8001)

這個在上篇中已經說的比較詳細了。相比上面的註冊應答,通用應答更爲簡單,在理解了註冊應答後再開看通用應答無非是應答id要隨着終端上報的消息id而改變,應該的結果爲:00其餘的沒有什麼區別。

相關文章
相關標籤/搜索