本發(fā)明涉及通信和控制領(lǐng)域中有關(guān)協(xié)議制定的編解碼方法,具體為一種適用于多機(jī)可靠通信的通信協(xié)議編解碼方法。
背景技術(shù):
通信協(xié)議是需要通信設(shè)備間達(dá)成一種約定,它對包含數(shù)據(jù)格式、傳送速度、同步方式、校驗(yàn)方式以及功能字符定義等問題作出統(tǒng)一規(guī)定,在設(shè)備間通信中必須共同遵守。在實(shí)際通信應(yīng)用中,如果缺少一個(gè)合理、嚴(yán)格、規(guī)范的通信協(xié)議,將無法保證數(shù)據(jù)傳輸?shù)恼_性和通信的可靠性。一般傳送的數(shù)據(jù)內(nèi)容被定義為字節(jié)的形式組織在協(xié)議幀中,并在幀中從前到后依次排列。傳統(tǒng)的幀編碼格式簡單,一般包括:起止標(biāo)記位、數(shù)據(jù)長度、功能碼、數(shù)據(jù)、校驗(yàn)和結(jié)束標(biāo)志位,多適應(yīng)于上位機(jī)和下位機(jī)之間通信,不能滿足多設(shè)備之間的通信需要。此外,傳統(tǒng)幀解碼時(shí)中只通過功能碼識別該幀功能,沒有對幀內(nèi)容進(jìn)行分類,導(dǎo)致代碼可讀性差不利于代碼維護(hù)和升級。
技術(shù)實(shí)現(xiàn)要素:
針對傳統(tǒng)幀編解碼方法的不足,本發(fā)明擬解決的問題是,提供一種適用于多機(jī)間可靠通信的具備幀內(nèi)容分類的低誤碼率通信協(xié)議編解碼方法。該方法幀頭部分包含源地址、目標(biāo)地址和幀類型,適用于多機(jī)通信,同時(shí)幀解析時(shí)可通過幀類型對幀數(shù)據(jù)進(jìn)行分類解析,代碼可讀性強(qiáng)便于維護(hù)和升級。此外,該方法采用循環(huán)冗余校準(zhǔn)方式,保證數(shù)據(jù)傳輸誤碼率低通信過程可靠。
本發(fā)明解決所述技術(shù)問題所采用的技術(shù)方案是,
一種適用于多機(jī)可靠通信的通信協(xié)議,所述的通訊協(xié)議的幀格式包括按照從前至后的順序依次排列的幀開始字段、幀頭字段、負(fù)載字段、校驗(yàn)字段和結(jié)束字段;其中,所述的幀頭字段包含按照從前至后的順序依次排列的幀類型字段、源地址字段、目標(biāo)地址字段、負(fù)載長度字段和功能碼字段;所述的負(fù)載字段按照負(fù)載內(nèi)容表示成多個(gè)連續(xù)數(shù)據(jù)類型字段,形成負(fù)載結(jié)構(gòu)模型。
幀開始字段和結(jié)束字段為兩到三個(gè)字節(jié)的固定值;所述的校驗(yàn)字段為兩個(gè)字節(jié)的循環(huán)冗余校驗(yàn)值,參與校驗(yàn)的數(shù)據(jù)從幀類型字段到負(fù)載字段。
所述的負(fù)載長度字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為負(fù)載長度值,該值為負(fù)載結(jié)構(gòu)模型的長度;功能碼字段為兩個(gè)字節(jié)長度的幀識別碼用以標(biāo)識不同的傳輸路徑、方向和幀類型。
數(shù)據(jù)類型為char型、short型、fool型、int型或自定義結(jié)構(gòu)體類型。
幀類型字段為一個(gè)字節(jié)長度,用以標(biāo)識數(shù)據(jù)幀類型、命令幀類型或應(yīng)答幀類型。
所述的適用于多機(jī)可靠通信的通信協(xié)議的編解碼方法,其特征在于,包括以下步驟,組幀編碼過程和幀解析過程,
所述的組幀編碼過程包括,
負(fù)載裝載步驟,將發(fā)送的負(fù)載數(shù)據(jù)按照負(fù)載結(jié)構(gòu)模型依次賦值,負(fù)載長度為連續(xù)類型字段的總長度即負(fù)載結(jié)構(gòu)模型的長度;
幀頭打包步驟,數(shù)據(jù)發(fā)送設(shè)備創(chuàng)建字節(jié)數(shù)組緩沖區(qū)用于存儲發(fā)送數(shù)據(jù)幀,依次為幀頭字段的每個(gè)字段內(nèi)容賦值并裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成幀頭打包;
完整傳輸幀打包步驟,結(jié)合幀類型字段到負(fù)載字段,計(jì)算得到循環(huán)冗余校驗(yàn)值,將負(fù)載內(nèi)容、校驗(yàn)碼和結(jié)束字段裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成完整傳輸幀打包;最后裝載發(fā)送數(shù)據(jù)緩沖區(qū),完成組幀編碼過程;
幀解析過程包括,
前導(dǎo)碼過濾步驟:創(chuàng)建接收數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū),對接收數(shù)據(jù)進(jìn)行前導(dǎo)碼過濾,檢測數(shù)據(jù)包有效性,
過濾步驟:提取幀頭數(shù)據(jù),依次對目標(biāo)地址過濾,對幀類型過濾,提取功能碼,
解析步驟:進(jìn)行幀功能碼適配,進(jìn)入功能碼匹配的負(fù)載數(shù)據(jù)解析函數(shù),結(jié)合該函數(shù)中的負(fù)載結(jié)構(gòu)模型,完成負(fù)載數(shù)據(jù)解析。
在所述的負(fù)載裝載步驟還包括負(fù)載結(jié)構(gòu)模型定義步驟,其為發(fā)送的負(fù)載內(nèi)容定義負(fù)載結(jié)構(gòu)模型,該負(fù)載結(jié)構(gòu)模型為負(fù)載內(nèi)容表示成的多個(gè)連續(xù)數(shù)據(jù)類型字段。
一種采用所述的的通信協(xié)議的通訊設(shè)備,包括數(shù)據(jù)總線和多個(gè)通過所述的數(shù)據(jù)總線通訊連接的設(shè)備,所述的設(shè)備分別包括組幀編碼模塊和幀解析模塊,
所述的組幀編碼模塊包括,
負(fù)載裝載子模塊,用以將發(fā)送的負(fù)載數(shù)據(jù)按照負(fù)載結(jié)構(gòu)模型依次賦值,負(fù)載長度為連續(xù)類型字段的總長度即負(fù)載結(jié)構(gòu)模型的長度;
幀頭打包子模塊,用以數(shù)據(jù)發(fā)送設(shè)備創(chuàng)建字節(jié)數(shù)組緩沖區(qū)用于存儲發(fā)送數(shù)據(jù)幀,依次為幀頭字段的每個(gè)字段內(nèi)容賦值并裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成幀頭打包;
完整傳輸幀打包子模塊,用以結(jié)合幀類型字段到負(fù)載字段,計(jì)算得到循環(huán)冗余校驗(yàn)值,將負(fù)載內(nèi)容、校驗(yàn)碼和結(jié)束字段裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成完整傳輸幀打包;最后裝載發(fā)送數(shù)據(jù)緩沖區(qū),完成組幀編碼過程;
幀解析模塊包括,
前導(dǎo)碼過濾子模塊,用以創(chuàng)建接收數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū),對接收數(shù)據(jù)進(jìn)行前導(dǎo)碼過濾,檢測數(shù)據(jù)包有效性,
過濾子模塊,用以提取幀頭數(shù)據(jù),依次對目標(biāo)地址過濾,對幀類型過濾,提取功能碼,
解析子模塊,用以進(jìn)行幀功能碼適配,進(jìn)入功能碼匹配的負(fù)載數(shù)據(jù)解析函數(shù),結(jié)合該函數(shù)中的負(fù)載結(jié)構(gòu)模型,完成負(fù)載數(shù)據(jù)解析。
在所述的負(fù)載裝載子模塊還包括負(fù)載結(jié)構(gòu)模型定義模塊,其用以為發(fā)送的負(fù)載內(nèi)容定義負(fù)載結(jié)構(gòu)模型,該負(fù)載結(jié)構(gòu)模型為負(fù)載內(nèi)容表示成的多個(gè)連續(xù)數(shù)據(jù)類型字段。
多設(shè)備間利用can總線通信或can總線與串口結(jié)合通信,can總線間通信時(shí),所有設(shè)備通過can口掛在can總線上,幀協(xié)議中目標(biāo)地址和源地址作為總線上的canid,設(shè)備間通信時(shí)通過canid識別是否為自己設(shè)備處理的數(shù)據(jù),如果是則進(jìn)行數(shù)據(jù)解包處理;
串口與can總線間結(jié)合通信時(shí),串口接收到數(shù)據(jù)后解析出原地址和目標(biāo)地址,形成canid,即鏈接到can總線上的設(shè)備地址,再將該數(shù)據(jù)發(fā)送到can總線上,通過canid識別是否為自己設(shè)備處理的數(shù)據(jù),如果是則進(jìn)行數(shù)據(jù)解包處理。
與現(xiàn)有技術(shù)相比,本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法的積極效果在于:
1、幀頭字段包含源地址字段和目標(biāo)地址字段,適用于多設(shè)備間通信。
2、采用負(fù)載結(jié)構(gòu)模型有效提高數(shù)據(jù)組幀和解析效率。
3、幀頭字段包含幀類型字段,幀解析時(shí)可通過幀類型對負(fù)載數(shù)據(jù)進(jìn)行分類解析,有效提高代碼的可讀性和維護(hù)性。
4、采用循環(huán)冗余校準(zhǔn)方式,保證數(shù)據(jù)傳輸誤碼率低通信質(zhì)量高。
附圖說明
圖1為本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法所采用的幀格式,其中a部分為幀頭部分,負(fù)載長度值為負(fù)載結(jié)構(gòu)模型長度大小。
圖2為本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法負(fù)載內(nèi)容與負(fù)載結(jié)構(gòu)模型對于關(guān)系。
圖3為本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法多機(jī)通信示意圖。
圖4為本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法組幀編碼流程圖。
圖5為本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法幀解析流程圖。
具體實(shí)施方式
下面參考附圖描述本發(fā)明的實(shí)施例。
一種適用于多機(jī)可靠通信的通信協(xié)議,幀格式包含按照從前至后的順序依次排列的幀開始字段、幀頭字段、負(fù)載字段、校驗(yàn)字段和結(jié)束字段;其中,幀開始字段和結(jié)束字段為兩到三個(gè)字節(jié)的固定值;幀頭字段包含按照從前至后的順序依次排列的幀類型字段、源地址字段、目標(biāo)地址字段、負(fù)載長度字段和功能碼字段;
其中,負(fù)載字段按照負(fù)載內(nèi)容表示成多個(gè)連續(xù)數(shù)據(jù)類型字段,形成負(fù)載結(jié)構(gòu)模型,負(fù)載結(jié)構(gòu)模型一般為用戶自定義的多個(gè)不同數(shù)據(jù)類型組成的結(jié)構(gòu)體,結(jié)構(gòu)體內(nèi)每個(gè)負(fù)載類型字段連續(xù)排列。負(fù)載結(jié)構(gòu)模型確定后,數(shù)據(jù)發(fā)送方和接收方都需要定義負(fù)載結(jié)構(gòu)模型,數(shù)據(jù)發(fā)送方為負(fù)載結(jié)構(gòu)模型的每個(gè)字段內(nèi)容進(jìn)行賦值,數(shù)據(jù)接收方需要完全按照負(fù)載結(jié)構(gòu)模型的順序?qū)ω?fù)載內(nèi)容進(jìn)行解析;負(fù)載結(jié)構(gòu)模型的存在能有效提高數(shù)據(jù)組幀和解析效率。
所述的校驗(yàn)字段為兩個(gè)字節(jié)的循環(huán)冗余校驗(yàn)值,參與校驗(yàn)的數(shù)據(jù)從幀類型字段到負(fù)載字段;幀類型字段為一個(gè)字節(jié)的不同幀類型值,如數(shù)據(jù)幀、命令幀或應(yīng)答幀等;幀類型字段不同于幀識別碼和目標(biāo)地址,它是對數(shù)據(jù)負(fù)載類型的分類,數(shù)據(jù)解析時(shí)幀類型解析位于目的地址解析之后、幀識別碼解析之前。幀類型的存在使不同類型,如命令、數(shù)據(jù)或應(yīng)答等的負(fù)載進(jìn)行分類解析,與傳統(tǒng)協(xié)議相比有效提高了數(shù)據(jù)解析的可讀性和代碼的維護(hù)迭代性。
源地址字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為發(fā)送方設(shè)備地址標(biāo)識,不同設(shè)備地址標(biāo)識唯一;目標(biāo)地址字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為接收方設(shè)備地址標(biāo)識,不同設(shè)備地址標(biāo)識唯一;負(fù)載長度字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為負(fù)載長度值,該值為負(fù)載結(jié)構(gòu)模型的長度;功能碼字段為兩個(gè)字節(jié)長度的幀識別碼,同一傳輸路徑、方向和幀類型的功能碼不能相同。
本發(fā)明的幀頭字段包含源地址字段和目標(biāo)地址字段,適用于多設(shè)備間通信。采用負(fù)載結(jié)構(gòu)模型有效提高數(shù)據(jù)組幀和解析效率。幀頭字段包含幀類型字段,幀解析時(shí)可通過幀類型對負(fù)載數(shù)據(jù)進(jìn)行分類解析,有效提高代碼的可讀性和維護(hù)性。采用循環(huán)冗余校準(zhǔn)方式,保證數(shù)據(jù)傳輸誤碼率低通信質(zhì)量高。
本發(fā)明適用于多機(jī)可靠通信的通信協(xié)議編解碼方法,參見圖1-5,其具體步驟是:
步驟s1,建立通用幀格式:幀格式包含開始字段、幀頭字段、負(fù)載字段、校驗(yàn)字段和結(jié)束字段,按照從前至后的順序依次排列,如幀格式如圖1所示)。
本實(shí)施例的開始字段和結(jié)束字段為兩個(gè)字節(jié)的固定值,開始字段為0x100x02,結(jié)束字段為0x310xaa。
步驟s2,建立幀頭字段:幀頭字段的格式包含幀類型字段、源地址字段、目標(biāo)地址字段、負(fù)載長度字段和功能碼字段,各字段按照從前至后的順序依次排列,如圖1中a部分框所示。
負(fù)載字段按照負(fù)載內(nèi)容表示成多個(gè)連續(xù)數(shù)據(jù)類型字段形成負(fù)載結(jié)構(gòu)模型,其中負(fù)載內(nèi)容數(shù)據(jù)類型可以是char型、short型、fool型、int型以及自定義結(jié)構(gòu)體類型等,如圖2所示。
校驗(yàn)字段為兩個(gè)字節(jié)的循環(huán)冗余校驗(yàn)值,參與校驗(yàn)的數(shù)據(jù)從幀類型字段開始到負(fù)載字段結(jié)束。結(jié)合圖1計(jì)算本實(shí)施例中的校驗(yàn)值為0x350xdb。
幀類型字段為一個(gè)字節(jié)長度的不同幀類型值,如數(shù)據(jù)幀(0x01)、命令幀(0x02)、應(yīng)答幀(0x03)等;本實(shí)施例中幀類型為數(shù)據(jù)幀。
源地址字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為數(shù)據(jù)發(fā)送方設(shè)備地址標(biāo)識,如圖3所示,不同設(shè)備地址標(biāo)識唯一,設(shè)備0x02為數(shù)據(jù)發(fā)送方。
目標(biāo)地址字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為數(shù)據(jù)接收方設(shè)備地址標(biāo)識,如圖3所示,不同設(shè)備地址標(biāo)識唯一,設(shè)備0x03為數(shù)據(jù)接收方。不同的設(shè)備間都可以通過數(shù)據(jù)總線通信,不同設(shè)備通過目的地址字段來識別是否為發(fā)給自己的數(shù)據(jù)。
負(fù)載長度字段為一個(gè)字節(jié)長度的數(shù)據(jù),定義為負(fù)載長度值,該值的大小取決于負(fù)載結(jié)構(gòu)模型長度。
功能碼字段為兩個(gè)字節(jié)長度的幀識別碼,用于定義該幀功能的唯一標(biāo)識,對于同一傳輸路徑、方向和幀類型的功能碼不能相同,本實(shí)施例中數(shù)據(jù)從設(shè)備0x02發(fā)送到設(shè)備0x03,幀類型為數(shù)據(jù)幀,功能碼0x100x22用于表示該幀功能的唯一標(biāo)識。
步驟s3組幀編碼過程:首先完成負(fù)載裝載,然后創(chuàng)建發(fā)送數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū)完成幀頭打包,最后完成完整傳輸幀打包,并裝載發(fā)送數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū),完成組幀編碼過程;
所述步驟s3具體如圖4所示。
1、為發(fā)送的負(fù)載內(nèi)容定義負(fù)載結(jié)構(gòu)模型,該模型為負(fù)載內(nèi)容表示成的多個(gè)連續(xù)數(shù)據(jù)類型字段。將發(fā)送的負(fù)載數(shù)據(jù)按照負(fù)載結(jié)構(gòu)模型依次賦值。負(fù)載長度為連續(xù)類型字段的總長度即負(fù)載結(jié)構(gòu)模型的長度,完成負(fù)載內(nèi)容裝載。
2、數(shù)據(jù)發(fā)送設(shè)備0x02創(chuàng)建數(shù)據(jù)發(fā)送字節(jié)數(shù)組緩沖區(qū)sendbuf[],結(jié)合源地址、發(fā)送地址、幀類型、負(fù)載長度和功能碼內(nèi)容打包幀頭,并裝載到發(fā)送數(shù)據(jù)緩沖區(qū)中,完成幀頭打包裝載。
3、結(jié)合幀頭內(nèi)容和負(fù)載內(nèi)容計(jì)算循環(huán)冗余校驗(yàn)值,并將負(fù)載內(nèi)容、校驗(yàn)碼和結(jié)束字段按幀格式順序裝載到發(fā)送數(shù)據(jù)緩沖區(qū)中,完成完整傳輸數(shù)據(jù)幀打包裝載。
步驟s4,幀解析過程:創(chuàng)建接收數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū),對接收數(shù)據(jù)進(jìn)行前導(dǎo)碼過濾,檢測數(shù)據(jù)包有效性,提取幀頭數(shù)據(jù),對目標(biāo)地址過濾,對幀類型過濾,提取功能碼,結(jié)合負(fù)載結(jié)構(gòu)模型完成負(fù)載數(shù)據(jù)解析。
所述步驟s4具體如圖5所示。
1、數(shù)據(jù)接收設(shè)備0x03創(chuàng)建接收數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū)receivebuf[],存放設(shè)備0x02發(fā)來的數(shù)據(jù)。
2、結(jié)合開始字段信息對緩沖區(qū)接收到的數(shù)據(jù)進(jìn)行前導(dǎo)碼過濾,驗(yàn)證收到第一個(gè)字節(jié)內(nèi)容是否為開始字段,如果是則繼續(xù)執(zhí)行解析過程,否則拋棄該幀從新解析新收到的幀內(nèi)容。
3、結(jié)合幀格式進(jìn)行循環(huán)冗余校驗(yàn),參與校驗(yàn)的數(shù)據(jù)從幀類型字段到負(fù)載字段結(jié)束,驗(yàn)證數(shù)據(jù)包的有效性,如果計(jì)算得到的校驗(yàn)碼和幀格式中的校驗(yàn)位一致表示該數(shù)據(jù)包有效繼續(xù)執(zhí)行解析過程,否則拋棄該幀從新解析新收到的幀內(nèi)容。
4、去除開始字段、結(jié)束字段和校驗(yàn)位字段形成有效的數(shù)據(jù)報(bào)文,結(jié)合幀格式提取幀頭信息。
5、對步驟4)形成的有效數(shù)據(jù)報(bào)文進(jìn)行目標(biāo)地址過濾,接收到的目標(biāo)地址為本地址(0x03),則繼續(xù)執(zhí)行解析過程,否則拋棄該幀從新解析新收到的幀內(nèi)容。
6、進(jìn)行幀類型適配,針對不同的幀類型(如數(shù)據(jù)幀類型、命令幀類型、應(yīng)答幀類型)進(jìn)入不同類型數(shù)據(jù)處理函數(shù)。
7、提取功能碼,進(jìn)行幀功能碼適配,進(jìn)入功能碼匹配的負(fù)載數(shù)據(jù)解析函數(shù),結(jié)合該函數(shù)中的負(fù)載結(jié)構(gòu)模型,完成負(fù)載數(shù)據(jù)解析。
同時(shí)本發(fā)明還公開了一種采用所述的的通信協(xié)議的通訊設(shè)備,包括數(shù)據(jù)總線和多個(gè)通過所述的數(shù)據(jù)總線通訊連接的設(shè)備,所述的設(shè)備分別包括組幀編碼模塊和幀解析模塊,
所述的組幀編碼模塊包括,
負(fù)載裝載子模塊,用以將發(fā)送的負(fù)載數(shù)據(jù)按照負(fù)載結(jié)構(gòu)模型依次賦值,負(fù)載長度為連續(xù)類型字段的總長度即負(fù)載結(jié)構(gòu)模型的長度;
幀頭打包子模塊,用以數(shù)據(jù)發(fā)送設(shè)備創(chuàng)建字節(jié)數(shù)組緩沖區(qū)用于存儲發(fā)送數(shù)據(jù)幀,依次為幀頭字段的每個(gè)字段內(nèi)容賦值并裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成幀頭打包;
完整傳輸幀打包子模塊,用以結(jié)合幀類型字段到負(fù)載字段,計(jì)算得到循環(huán)冗余校驗(yàn)值,將負(fù)載內(nèi)容、校驗(yàn)碼和結(jié)束字段裝載到發(fā)送數(shù)據(jù)緩存區(qū)中,完成完整傳輸幀打包;最后裝載發(fā)送數(shù)據(jù)緩沖區(qū),完成組幀編碼過程;
幀解析模塊包括,
前導(dǎo)碼過濾子模塊,用以創(chuàng)建接收數(shù)據(jù)字節(jié)數(shù)組緩沖區(qū),對接收數(shù)據(jù)進(jìn)行前導(dǎo)碼過濾,檢測數(shù)據(jù)包有效性,
過濾子模塊,用以提取幀頭數(shù)據(jù),依次對目標(biāo)地址過濾,對幀類型過濾,提取功能碼,
解析子模塊,用以進(jìn)行幀功能碼適配,進(jìn)入功能碼匹配的負(fù)載數(shù)據(jù)解析函數(shù),結(jié)合該函數(shù)中的負(fù)載結(jié)構(gòu)模型,完成負(fù)載數(shù)據(jù)解析。
其中,在所述的負(fù)載裝載子模塊還包括負(fù)載結(jié)構(gòu)模型定義模塊,其用以為發(fā)送的負(fù)載內(nèi)容定義負(fù)載結(jié)構(gòu)模型,該負(fù)載結(jié)構(gòu)模型為負(fù)載內(nèi)容表示成的多個(gè)連續(xù)數(shù)據(jù)類型字段。
具體來說,多設(shè)備間利用can總線通信或can總線與串口結(jié)合通信,can總線間通信時(shí),所有設(shè)備通過can口掛在can總線上,幀協(xié)議中目標(biāo)地址和源地址作為總線上的canid,設(shè)備間通信時(shí)通過canid識別是否為自己設(shè)備處理的數(shù)據(jù),如果是則進(jìn)行數(shù)據(jù)解包處理;
串口與can總線間結(jié)合通信時(shí),串口接收到數(shù)據(jù)后解析出原地址和目標(biāo)地址,形成canid,即鏈接到can總線上的設(shè)備地址,再將該數(shù)據(jù)發(fā)送到can總線上,通過canid識別是否為自己設(shè)備處理的數(shù)據(jù),如果是則進(jìn)行數(shù)據(jù)解包處理。
本發(fā)明的通訊設(shè)備的優(yōu)勢表現(xiàn)為:1、實(shí)現(xiàn)多設(shè)備間穩(wěn)定可靠通信。2、can總線通信時(shí),canid為總線上的設(shè)備地址,同時(shí)幀協(xié)議中包含目標(biāo)地址,這兩個(gè)地址是一一對應(yīng)的,canid用于總線設(shè)備尋址,幀協(xié)議中目標(biāo)地址可用于數(shù)據(jù)傳輸校驗(yàn),提高數(shù)據(jù)傳輸?shù)目煽啃浴?、該協(xié)議中采用負(fù)載結(jié)構(gòu)模型有效提高數(shù)據(jù)組幀和解析效率。4、該幀幀頭字段包含幀類型字段,幀解析時(shí)可通過幀類型對負(fù)載數(shù)據(jù)進(jìn)行分類解析,有效提高代碼的可讀性和維護(hù)性。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出的是,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。