一種傳輸數(shù)據(jù)包的方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明設(shè)及通信技術(shù)領(lǐng)域,尤其設(shè)及一種傳輸數(shù)據(jù)包的方法。
【背景技術(shù)】
[0002] CAN總線是一種面向工業(yè)嵌入式系統(tǒng)的總線式通訊接口,其具有高可靠,多節(jié)點的 特點。但其數(shù)據(jù)包長度較短且固定,數(shù)據(jù)包無法在其他通訊接口上有效傳輸。
[0003] UART接口即串行接口,是一種簡單的常用通訊接口,其結(jié)構(gòu)簡單,使用方便但無法 支持多節(jié)點。
[0004] 化enCAN協(xié)議是一種基于CAN總線的上層通訊協(xié)議,其擴展了 CAN的能力,定義了數(shù) 據(jù)交換方式W及節(jié)點的描述方式,但是其結(jié)構(gòu)相對復(fù)雜,不方便使用在低成本系統(tǒng)上,且無 法在其他類型鏈路上傳輸。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是提供一種傳輸數(shù)據(jù)包的方法,通過節(jié)點接口的接收/發(fā)送過濾器 判斷數(shù)據(jù)包中的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè) 備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致,如果判斷結(jié)果一致,則轉(zhuǎn)發(fā)該數(shù)據(jù)包,使得協(xié)議結(jié) 構(gòu)簡單,實現(xiàn)成本低。同時,還可W在多種不同鏈路層之間進行傳輸,適用性高。
[0006] 本發(fā)明提供的一種傳輸數(shù)據(jù)包的方法,該方法包括:屬于第一節(jié)點的至少兩個接 口中的第一接口接收第二節(jié)點發(fā)送的數(shù)據(jù)包,其中,所述數(shù)據(jù)包包括:協(xié)議ID、源設(shè)備ID、目 標(biāo)設(shè)備ID和數(shù)據(jù)類型ID,W及數(shù)據(jù),所述第一節(jié)點的設(shè)備ID作為所述數(shù)據(jù)包中的目標(biāo)設(shè)備 ID,所述第二節(jié)點的設(shè)備ID作為所述數(shù)據(jù)包中的源設(shè)備ID;
[0007] 所述第一接口的接收過濾器判斷所述數(shù)據(jù)包中的協(xié)議ID、所述源設(shè)備ID、所述目 標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一 致;
[000引如果所述接收過濾器判斷的結(jié)果為一致,至少一個第二接口中的每個第二接口的 發(fā)送過濾器判斷所述數(shù)據(jù)包中的協(xié)議ID、所述源設(shè)備ID、所述目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是 否與已存儲的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致,其中,所述至少一個第 二接口為所述至少兩個接口中除所述第一接口之外的其他接口;
[0009] 如果所述發(fā)送過濾器判斷的結(jié)果為一致,通過第=接口轉(zhuǎn)發(fā)所述數(shù)據(jù)包,其中,所 述第=接口為所述至少一個第二接口中的部分接口。
[0010] 可選地,當(dāng)所述源設(shè)備ID為0時,標(biāo)識發(fā)送所述數(shù)據(jù)包的源設(shè)備為未知設(shè)備;當(dāng)所 述目標(biāo)設(shè)備ID為加寸,標(biāo)識接收所述數(shù)據(jù)包的目標(biāo)設(shè)備為多個能接收到所述數(shù)據(jù)包的設(shè)備。 [001U 可選地,所述第一接口為總線接口,所述數(shù)據(jù)包還包括:帖ID和數(shù)據(jù)長度,
[0012] 所述帖ID包括:分包序號、所述協(xié)議ID、所述源設(shè)備ID、所述目標(biāo)設(shè)備ID和所述數(shù) 據(jù)類型ID,其中,所述分包序號用于標(biāo)識所述數(shù)據(jù)包的分包的序號;
[0013] 數(shù)據(jù)長度,用于標(biāo)識所述數(shù)據(jù)包的分包中攜帶的數(shù)據(jù)的長度,且所述數(shù)據(jù)長度的 取值為O至化的整數(shù);W及
[0014] 所述數(shù)據(jù)包的分包中攜帶的數(shù)據(jù),所述數(shù)據(jù)占用0到8Byte。
[0015] 可選地,所述第一接口的接收過濾器判斷所述數(shù)據(jù)包中的協(xié)議ID、所述源設(shè)備ID、 所述目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型 ID均一致,包括:
[0016] 檢查緩沖區(qū)中是否存在與所述數(shù)據(jù)包中的協(xié)議ID、所述源設(shè)備ID、所述目標(biāo)設(shè)備 ID和數(shù)據(jù)類型ID均一致的數(shù)據(jù)碎片集合;
[0017] 如果存在所述數(shù)據(jù)碎片集合,根據(jù)所述數(shù)據(jù)包中的分包序號將所述數(shù)據(jù)包插入所 述數(shù)據(jù)碎片集合中;
[0018] 確定所述數(shù)據(jù)碎片集合中的數(shù)據(jù)是否接收完畢,當(dāng)所述數(shù)據(jù)碎片集合中存在分包 序號為0的數(shù)據(jù)包時,確定所述數(shù)據(jù)接收完畢。
[0019] 可選地,所述根據(jù)所述數(shù)據(jù)包中的分包序號將所述數(shù)據(jù)包插入所述數(shù)據(jù)碎片集合 中包括:依照分包序號從最大值到0的順序,將所述數(shù)據(jù)包插入所述數(shù)據(jù)碎片集合中,其中, 分包序號的所述最大值等于所述數(shù)據(jù)的數(shù)據(jù)長度除W8減1后向上取整。
[0020] 可選地,所述方法還包括:如果所述緩沖區(qū)中不存在所述數(shù)據(jù)碎片集合時,W所述 數(shù)據(jù)包中的分包序號為起始,新建數(shù)據(jù)碎片集合。
[0021] 可選地,所述第一接口為串行接口,所述數(shù)據(jù)包還包括:第一標(biāo)識,用于標(biāo)識所述 數(shù)據(jù)包的起始字節(jié)0,且所述第一標(biāo)識占用IB^e;
[0022] 第二標(biāo)識,用于標(biāo)識所述數(shù)據(jù)包的起始字節(jié)1,且所述第二標(biāo)識占用IByte;
[0023] 數(shù)據(jù)長度,用于標(biāo)識所述數(shù)據(jù)包中攜帶的數(shù)據(jù)的長度,且所述數(shù)據(jù)長度占用 IBy te;數(shù)據(jù)校驗項,用于標(biāo)識所述數(shù)據(jù)包是完整的數(shù)據(jù)包。
[0024] 可選地,在所述第一接口的接收過濾器判斷所述數(shù)據(jù)包中的協(xié)議ID、所述源設(shè)備 ID、所述目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類 型ID均一致之后,所述方法還包括:
[0025] 根據(jù)所述數(shù)據(jù)包中的所述第一標(biāo)識和所述第二標(biāo)識確定所述數(shù)據(jù)包的起始字節(jié); 檢查所述數(shù)據(jù)包中的數(shù)據(jù)校驗項,W確保所述數(shù)據(jù)包是完整的數(shù)據(jù)包。
[0026] 基于上述技術(shù)方案提供的一種傳輸數(shù)據(jù)包的方法,通過節(jié)點接口的接收/發(fā)送過 濾器判斷數(shù)據(jù)包中的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、 源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致,如果判斷結(jié)果一致,則轉(zhuǎn)發(fā)該數(shù)據(jù)包。該數(shù)據(jù) 包使得協(xié)議結(jié)構(gòu)簡單,實現(xiàn)成本低。同時,還可W在多種不同鏈路層之間進行傳輸,適用性 局。
【附圖說明】
[0027] 本發(fā)明的附圖是為了方便進一步理解本發(fā)明實施例的技術(shù)方案。
[0028] 圖1為根據(jù)本發(fā)明一個實施例提供的一種傳輸數(shù)據(jù)包的方法的流程示意圖;
[0029] 圖2為根據(jù)本發(fā)明另一個實施例提供的一種傳輸數(shù)據(jù)包的方法的流程示意圖;
[0030] 圖3為根據(jù)本發(fā)明再一個實施例提供的一種傳輸數(shù)據(jù)包的方法的流程示意圖。
【具體實施方式】
[0031] 為使本發(fā)明實施例的技術(shù)方案W及優(yōu)點表達的更清楚,下面通過附圖和實施例, 對本發(fā)明的技術(shù)方案做進一步的詳細描述,W下實施例用于說明本申請,但不用來限制本 申請的范圍。
[0032] 圖1為根據(jù)本發(fā)明一個實施例提供的一種傳輸數(shù)據(jù)包的方法100的流程示意圖。如 圖1所示的方法100包括:
[0033] 110,屬于第一節(jié)點的至少兩個接口中的第一接口接收第二節(jié)點發(fā)送的數(shù)據(jù)包,其 中,該數(shù)據(jù)包包括:協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID,W及數(shù)據(jù),該第一節(jié)點的 設(shè)備ID作為該數(shù)據(jù)包中的目標(biāo)設(shè)備ID,該第二節(jié)點的設(shè)備ID作為該數(shù)據(jù)包中的源設(shè)備ID。
[0034] 120,第一接口的接收過濾器判斷該數(shù)據(jù)包中的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和 數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致。
[0035] 130,如果接收過濾器判斷的結(jié)果為一致,至少一個第二接口中的每個第二接口的 發(fā)送過濾器判斷該數(shù)據(jù)包中的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲 的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致,其中,至少一個第二接口為至少兩 個接口中除第一接口之外的其他接口。
[0036] 140,如果發(fā)送過濾器判斷的結(jié)果為一致,通過第=接口轉(zhuǎn)發(fā)該數(shù)據(jù)包,其中,第= 接口為至少一個第二接口中的部分接口。
[0037] 具體的,數(shù)據(jù)包的結(jié)構(gòu)如下表1所示。
[0039] 應(yīng)理解,在該實施例中,當(dāng)源設(shè)備ID為0時,標(biāo)識發(fā)送數(shù)據(jù)包的源設(shè)備為未知設(shè)備。 當(dāng)目標(biāo)設(shè)備ID為加寸,標(biāo)識接收數(shù)據(jù)包的目標(biāo)設(shè)備為多個能接收到數(shù)據(jù)包的設(shè)備。
[0040] 上述實施例提供的一種傳輸數(shù)據(jù)包的方法,通過節(jié)點接口的接收/發(fā)送過濾器判 斷數(shù)據(jù)包中的協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID是否與已存儲的協(xié)議ID、源設(shè)備 ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID均一致,如果判斷結(jié)果一致,則轉(zhuǎn)發(fā)該數(shù)據(jù)包。該數(shù)據(jù)包是基 于總線/點對點可轉(zhuǎn)換通訊協(xié)議(Standard Exchange Protocol,SEP)的,使得協(xié)議結(jié)構(gòu)簡 單,實現(xiàn)成本低。同時,還可W在多種不同鏈路層之間進行傳輸,適用性高。
[0041 ]可選地,當(dāng)?shù)谝唤涌跒榭偩€接口時,也就是說,數(shù)據(jù)包通過總線接口傳輸時,數(shù)據(jù) 包還包括:帖ID和數(shù)據(jù)長度,其中,
[0042] 帖ID包括:分包序號、協(xié)議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID,其中,分包序 號用于標(biāo)識數(shù)據(jù)包的分包的序號;
[0043] 數(shù)據(jù)長度,用于標(biāo)識數(shù)據(jù)包的分包中攜帶的數(shù)據(jù)的長度,且數(shù)據(jù)長度的取值為0到 8的整數(shù);W及數(shù)據(jù)包的分包中攜帶的數(shù)據(jù),數(shù)據(jù)占用0到8Byte。
[0044] 例如:數(shù)據(jù)包在CAN總線上傳輸時,數(shù)據(jù)包的結(jié)構(gòu)如下表2所示。
[0045]
[0046] 需要說明的是,由于通過CAN總線傳輸數(shù)據(jù)包時,一包數(shù)據(jù)最多為8byte,因此,可 W使用分包的形式進行傳輸。上述表2中,帖ID可W占用29Bit,而帖ID包括的分包序號、協(xié) 議ID、源設(shè)備ID、目標(biāo)設(shè)備ID和數(shù)據(jù)類型ID通過11位BaseID和18位EnxtendedID承載依次進 行承載。
[0047] 另外,數(shù)據(jù)長度可W使用4位化C承載。數(shù)據(jù)是指數(shù)據(jù)包的分包中所攜帶的數(shù)據(jù)。 [004引分包序號在第一分包時為最大值,每發(fā)一包遞減1,最后一包時為0表示數(shù)據(jù)傳輸 結(jié)束。其中,分包序號的最大值等于數(shù)據(jù)的數(shù)據(jù)長度除W8減1后向上取整。
[0049] 例如:數(shù)據(jù)長度為26,則分包序號的最大值等于3。也就是說,第一分包的分包序號 為3,數(shù)據(jù)長度為8;第二分包的分包序號為2,數(shù)據(jù)長度為8;第=分包的分包序號為1,數(shù)據(jù) 長度為8;第四分包的分包序號為0,數(shù)據(jù)長度為2。當(dāng)發(fā)送設(shè)備將第四分包發(fā)送后,數(shù)據(jù)發(fā)送 完畢;當(dāng)接收設(shè)備收到第四分包時,數(shù)據(jù)接收完畢。
[0050] 可選地,作為本發(fā)明的一個實施例,當(dāng)?shù)谝唤涌?