報文解析 Excel公式自動解析CAN報文的方法

2021-10-16 05:58:32 字數 1718 閱讀 5343

在can網路上擷取的報文一般被儲存為為.txt或.asc等格式,在分析報文時經常需要對著協議來逐條報文、逐個位元組甚至逐節來解析。為了應對這種情況,行業內也是提出了各種解決方案,比如vector的can報文軟體,或者自己寫上位機來自動解析,再或者將對應報文匯入進excel中用公式自動解析……

本文詳細介紹了在excel中用公式解析can報文的方法,讀者也可基於這個excel來編寫解析用到的其他報文協議。

報文定義型別

以gbt 27930協議中的crm報文為例,can報文中的位元組定義主要有以下幾種用途。

狀態定義,比如「bms不能識別」和「bms能識別」這兩種狀態

資料定義,比如充電機編號

編碼定義,比如將報文內容轉換為ascii碼

常用公式

根據這幾種用法,可在excel中用對應的公式將其表示結果自動解析出來。以下是常用到的公式(以下示例如未特別註明,則數字均為十進位制格式):

hex2dec(number) —— 將十六進製制數字number轉換成十進位制格式。如填入十六進製制數字10,則返回十進位制數字16,即hex2dec(10) = 16;

mod(number,divisor) —— 將數字number除以divisor,然後取結果的餘數。如number = 10,divisor = 3,則返回結果為1,即mod(10,3) = 1;

int(number)——對number進行取整,例如number = 10/3,則返回3,即int(10,3) = 3;

choose(index_num,value1,value2,…) —— 根據index_num的值來顯示後方的value。如index_num = 2,value1 = 5,value2 = 6,則choose的返回結果為6,choose(2,5,6) = 6;

if(test,true,false) —— test是乙個條件公式,根據條件邏輯結果返回後方對應的內容。如test內容為「1 = 2」,true = 33,false = 44,則if返回結果為44,即if(1=2,33,44) = 44;

char(number) —— 返回數字number對應的ascii中的字元。如number = 68,則cahr返回的結果為「d」,即char(68) = d.

公式應用

下面將以chm、crm、bst報文為例來講解公式用法。

chm報文定義很簡單,就三個位元組來表示版本。實際分析時一眼就能看明白,用不著解析,不過為了說明還是有必要來看看解析方式啦~

解析公式為「="chm協議版本:v"&j4&i4&"."&h4」。

其中j4、i4、h4分別為定義中的byte3,byte2和byte1

符號&將將這三個位元組合併到一起成為011

但是定義中是有符號v和小數點的,因此在定義位置加入內建對應文字的英文雙引號字元,再用符號&將它們並起來就可以顯示成定義模樣了

公式中雙引號內的字元可根據實際需求隨意修改

crm報文有三個定義,剛好對應三種型別:

報文解析 104規約報文結構解析

104 規約的報文由啟動字元 報文長度 控制域和應用服務資料單元組成,出於控制的目的,報文也可僅由啟動字元 報文長度和控制域組成。2種結構。二 控制域 根據不同的應用,控制域的格式,有3種型別。用於編號的資訊傳輸。向對方報告已收到的資訊幀序列號。可計數的資訊傳輸功能。特點 控制域1的第乙個bit,d...

Iphone XML報文解析

nsxmlparser iphone 之nsxmlparser 的使用 nsxmlparser 解析xml 格式的資料 用法如下 首先,nsxmlparser 必須繼續 nsxmlparserdelegate協議 inte ce xmlhelper nsobject 首先設定 xml資料,並初始化 ...

HTTP報文解析

超文字傳輸協議 hypertext transfer protocol,簡稱http 是應用層協議。http 是一種請求 響應式的協議,即乙個客戶端與伺服器建立連線後,向伺服器傳送乙個請求 伺服器接到請求後,給予相應的響應資訊。http請求報文分為三部分 請求行 請求頭部 請求包體 由方法字段 ur...