亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JT/T808協(xié)議之:0x0001終端通用應(yīng)答和0x8001平臺(tái)通用應(yīng)答

April / 2971人閱讀

摘要:將接收到的消息還原轉(zhuǎn)義后除去消息標(biāo)識(shí)和校驗(yàn)位,按位異或得到的結(jié)果就是這條消息的校驗(yàn)碼,和校驗(yàn)位比對(duì)驗(yàn)證其的一致性。將要發(fā)出的消息封裝好后出去標(biāo)示位外,按位異或,得到的校驗(yàn)碼放在消息尾部,然后轉(zhuǎn)義。

終端是指obd設(shè)備,既車載obd設(shè)備。

平臺(tái)是指上文中說(shuō)到的通過(guò)短信設(shè)置的上報(bào)IP指向的機(jī)器所提供的網(wǎng)關(guān)服務(wù)。

這兩種消息一是終端設(shè)備發(fā)出的,一是平臺(tái)發(fā)出的,都是通用應(yīng)答的格式,所謂通用既是可以用于應(yīng)答其他消息的一種消息格式。

0x0001終端通用應(yīng)答
起始字節(jié) 字段 數(shù)據(jù)類型 描述及要求
0 應(yīng)答流水號(hào) WORD 對(duì)應(yīng)的平臺(tái)消息的流水號(hào)
2 應(yīng)答 ID WORD 對(duì)應(yīng)的平臺(tái)消息的 ID
4 結(jié)果 BYTE 0:成功/確認(rèn);1:失敗;2:消息有誤;3:不支持

ps.上表省略消息頭部分,默認(rèn)所有的應(yīng)答和發(fā)送都帶有消息頭

在平臺(tái)下發(fā)指令或者設(shè)置終端參數(shù)(0x8103)時(shí)設(shè)備將應(yīng)答此消息。

應(yīng)答流水號(hào):一個(gè)四位字符的16進(jìn)制字符串,是平臺(tái)消息的流水號(hào),可以為 0000

應(yīng)答ID: 四位字符16進(jìn)制的消息id,如(8103,0001等)

應(yīng)答結(jié)果:兩位字符的16進(jìn)制字符,如表中的結(jié)果應(yīng)答為,00:成功,01:失敗,02:消息有誤等

0x8001平臺(tái)通用應(yīng)答

設(shè)備發(fā)送的消息,除注冊(cè)應(yīng)答(0x8100)、校時(shí)應(yīng)答(0x8f01)外其他數(shù)據(jù)數(shù)據(jù)發(fā)送都可使用此消息id應(yīng)答。

如消息:7E80010005013183700516000005D2020000817E

解析如下:

拆分編號(hào) 消息 說(shuō)明
1 7e 消息標(biāo)示
2 8100 消息ID
3 000F 消息體屬性
4 013183700516 設(shè)備號(hào)
5 0000 消息流水號(hào)
6 05D2 對(duì)應(yīng)的終端消息的流水號(hào),既終端消息的流水號(hào)
7 0200 對(duì)應(yīng)的終端消息的 ID
8 00 0:成功/確認(rèn);1:失敗;2:消息有誤;3:不支持;4:報(bào)警確認(rèn)處理
9 81 校驗(yàn)碼
10 7e 消息標(biāo)示

消息頭就不說(shuō)了,這里需要注意的是 編號(hào)7 行的 0200是設(shè)備位置信息匯報(bào)的消息id,這說(shuō)明這條信息是應(yīng)答設(shè)備發(fā)出的位置信息匯報(bào)(0x0200)的結(jié)果, 回復(fù)不同的消息,這里的數(shù)據(jù)是不同的。

校驗(yàn)碼的計(jì)算

上篇大概說(shuō)了一下計(jì)算的方法,這里詳細(xì)寫(xiě)下計(jì)算校驗(yàn)碼和驗(yàn)證校驗(yàn)碼的細(xì)節(jié)。

將接收到的消息還原轉(zhuǎn)義后除去消息標(biāo)識(shí)和校驗(yàn)位,按位異或得到的結(jié)果就是這條消息的校驗(yàn)碼,和校驗(yàn)位比對(duì)驗(yàn)證其的一致性。
將要發(fā)出的消息封裝好后出去標(biāo)示位外,按位異或,得到的校驗(yàn)碼放在消息尾部,然后轉(zhuǎn)義。

#按位偽代碼
function bcc(array data) {
    xor = data[0];

    for(i=1; i< data.length; i++) {
        xor ^= data[i]
    }
    return xor
}

熟悉上面的過(guò)程且看下如下代碼:

轉(zhuǎn)義和還原轉(zhuǎn)義代碼舉例

/**
 * Jt808協(xié)議解析
 */
class Jt808 implements Protocol {

    public $hex;

    /**
     * 消息體內(nèi)容
     * @var |body
     */
    public $body;

    /**
     * 轉(zhuǎn)義與轉(zhuǎn)義還原時(shí)使用
     * @var array
     */
    public $search = ["7d01", "7d02"];
    public $replace = ["7d", "7e"];

    ...

    ...

    /**
     * 轉(zhuǎn)義消息內(nèi)容
     * 7d -> 7d01
     * 7e -> 7d02
     * @return mixed
     */
    public function escape($msg = "") {
        if ($msg) {
            return "7e" . str_replace($this->replace, $this->search, $msg) . "7e";
        } else {
            $this->hex = "7e" . str_replace($this->replace, $this->search, substr($this->hex, 2, -2)) . "7e";
        }
    }

    /**
     * 還原轉(zhuǎn)義
     * 7d01 -> 7d
     * 7d02 -> 7e
     * @return mixed
     */
    public function descape($msg = "") {
        if ($msg) {
            return str_replace($this->search, $this->replace, $msg);
        } else {
            $this->hex = "7e" . str_replace($this->search, $this->replace, substr($this->hex, 2, -2)) . "7e";
        }
    }
}

計(jì)算&驗(yàn)證校驗(yàn)碼舉例

#@param check_code|校驗(yàn)碼 為空是計(jì)算校驗(yàn)碼,不為空為驗(yàn)證校驗(yàn)碼
function bcc($msg, $check_code = "") {
    //按兩位字符切割字符串
    $check_str_array = str_split($msg, 2);
    $str_len = count($check_str_array);

    $xor = hexdec($check_str_array[0]);

    for ($i = 1; $i < $str_len; $i++) {
        $xor ^= hexdec($check_str_array[$i]);
    }
    $xor = dechex($xor);
    $xor = str_pad($xor, 2, 0, STR_PAD_LEFT); #不足兩位前面填充0
    if (!$check_code) {
        return $xor;
    }
    return $xor == $check_code;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29630.html

相關(guān)文章

  • SPI、PCI、IIC、UART、GPIO、AXI4協(xié)議總結(jié)大全

    摘要:從設(shè)備使能信號(hào),由主設(shè)備控制,只有該信號(hào)為預(yù)先規(guī)定的使能信號(hào),對(duì)該芯片的操作才有效,這就允許再統(tǒng)一總線上連接多個(gè)設(shè)備。點(diǎn)對(duì)點(diǎn)通信中,接口不需要進(jìn)行尋址操作,但是沒(méi)有指定的流控制,沒(méi)有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。 1、GPIO 通用可編程IO接口,對(duì)于簡(jiǎn)單的外圍設(shè)備或者電路,需要CPU為之提供...

    zhangrxiang 評(píng)論0 收藏0
  • FPAG學(xué)習(xí)筆記——I2C接口實(shí)現(xiàn)

    摘要:總線空閑和均為高電平協(xié)議起始位為高電平時(shí),出現(xiàn)下降沿協(xié)議終止位為高電平時(shí),出現(xiàn)上升沿。主設(shè)備產(chǎn)生所有時(shí)鐘脈沖,包括確認(rèn)位第九個(gè)時(shí)鐘脈沖。當(dāng)在第個(gè)時(shí)鐘脈沖期間保持高時(shí),這被定義為非應(yīng)答信號(hào)。 ...

    DevTalking 評(píng)論0 收藏0
  • 【2022版】基于部標(biāo)JT808JT1078車載視頻位置監(jiān)控平臺(tái)介紹-開(kāi)源項(xiàng)目

    摘要:是定位協(xié)議通訊協(xié)議基礎(chǔ)協(xié)議其他協(xié)議基于該協(xié)議進(jìn)行擴(kuò)展。是轉(zhuǎn)發(fā)協(xié)議監(jiān)管協(xié)議第三方平臺(tái)通過(guò)向進(jìn)行數(shù)據(jù)獲取與事件下發(fā)。蘇標(biāo)主動(dòng)安全協(xié)議高級(jí)駕駛輔助報(bào)警駕駛員狀態(tài)報(bào)警胎壓監(jiān)測(cè)報(bào)警盲區(qū)監(jiān)測(cè)報(bào)警在觸發(fā)報(bào)警時(shí)需要上報(bào)附件視頻圖片文本。 ...

    terro 評(píng)論0 收藏1

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<