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