欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中用cantools和can工具包解析blf文件的方法

 更新時間:2023年09月01日 10:10:44   作者:羸弱的窮酸書生  
這篇文章主要給大家介紹了關(guān)于python中用cantools和can工具包解析blf文件的相關(guān)資料,blf數(shù)據(jù)不像mf4那樣自帶信號數(shù)據(jù)庫,因為它是記日志用的,一般情況下要盡可能的小,需要的朋友可以參考下

一、工具包安裝

pip install cantools python-can

二、解析blf文件

一般情況下,解析blf需要dbc文件,當然其實不用dbc也可以,只不過解析比較麻煩,推薦還是配合dbc解析,這個也是我們最常用的辦法。所以要用dbc,需要先加載dbc文件,這里需要cantools,代碼:

import cantools
import can
dbc_file = r"C:\Users\master01\Downloads\blf_conf\FS04通用_TBOX(1).dbc"
dbc = cantools.db.load_file(dbc_file)

加載完dbc文件,就可以解析blf文件了,代碼

f = r"C:\Users\master01\Downloads\blfdata\問題blf\1.17-9-10.blf"
log_data = can.BLFReader(f)
for msg in log_data:
    print(msg)

打印結(jié)果是這樣的

Timestamp: 1673917200.026000        ID: 0301    S Rx                DL:  8    1d b0 41 54 07 02 00 00     Channel: 0
Timestamp: 1673917200.026000        ID: 070b    S Rx                DL:  8    00 c8 0c b6 24 b8 24 b8     Channel: 0
Timestamp: 1673917200.028000        ID: 0322    S Rx                DL:  8    00 00 00 00 00 00 03 00     Channel: 0
Timestamp: 1673917200.126000        ID: 030d    S Rx                DL:  8    00 14 00 00 00 00 00 00     Channel: 0
Timestamp: 1673917200.126000        ID: 0320    S Rx                DL:  8    06 b1 00 00 00 00 07 00     Channel: 0
Timestamp: 1673917200.127000        ID: 0708    S Rx                DL:  8    00 48 00 48 00 08 00 32     Channel: 0
Timestamp: 1673917200.129000        ID: 0712    S Rx                DL:  8    00 06 81 0d 21 05 00 00     Channel: 0
Timestamp: 1673917200.271000    ID: 1821a7c1    X Rx                DL:  8    02 2f 00 00 00 00 00 00     Channel: 0
Timestamp: 1673917200.321000        ID: 0110    S Rx                DL:  8    05 36 16 67 00 09 20 6b     Channel: 0
Timestamp: 1673917200.322000        ID: 0111    S Rx                DL:  8    16 5d 00 00 d4 00 20 bf     Channel: 0
Timestamp: 1673917200.322000        ID: 0112    S Rx                DL:  8    49 32 00 10 00 16 6d 4c     Channel: 0
Timestamp: 1673917200.326000        ID: 0300    S Rx                DL:  8    00 3a c2 f8 00 00 00 00     Channel: 0
Timestamp: 1673917200.326000        ID: 0710    S Rx                DL:  8    00 00 00 00 00 00 00 00     Channel: 0
Timestamp: 1673917200.427000        ID: 0709    S Rx                DL:  8    0e 02 0e b0 4a 0c ff fe     Channel: 0
Timestamp: 1673917200.427000        ID: 070a    S Rx                DL:  8    11 51 1f fd 46 de 1c 83     Channel: 0
Timestamp: 1673917200.428000        ID: 0711    S Rx                DL:  8    02 df 00 09 02 d5 00 d4     Channel: 0
Timestamp: 1673917200.438000        ID: 0308    S Rx                DL:  8    03 22 0a 3c 0a 00 00 2a     Channel: 0
Timestamp: 1673917200.550000        ID: 03a1    S Rx                DL:  8    00 00 06 b1 00 00 15 00     Channel: 0
Timestamp: 1673917200.550000        ID: 03a2    S Rx                DL:  8    00 00 00 00 00 00 05 00     Channel: 0
Timestamp: 1673917200.633000        ID: 0270    S Rx                DL:  8    00 67 67 00 00 00 00 a2     Channel: 0
Timestamp: 1673917200.638000        ID: 0307    S Rx                DL:  8    41 14 03 c0 36 00 00 03     Channel: 0
Timestamp: 1673917200.638000        ID: 0309    S Rx                DL:  8    1c 1c 1c 1c 1c 1c c3 50     Channel: 0
Timestamp: 1673917200.655000        ID: 03a0    S Rx                DL:  8    06 b1 00 00 00 00 15 00     Channel: 0
Timestamp: 1673917200.657000        ID: 030a    S Rx                DL:  8    00 00 00 00 00 00 00 00     Channel: 0

可以發(fā)現(xiàn),時間戳解析出來了,其它的數(shù)據(jù)都是16進制,沒法直接看,當然我們?nèi)绻煜lf格式,可以自己把數(shù)據(jù)還原出來,但是既然已經(jīng)用第三方庫,我們當然就不用自己解析了,而且仔細觀察一下即可發(fā)現(xiàn),之前的加載dbc并沒有用上,所以這時一個重要的函數(shù)登場了,那就是dbc.decode_message(id,data),具體代碼如下

decoded = {}
for msg in logdata:
    try:
        dec = dbc.decode_message(msg.arbitration_id, msg.data)
        if dec:
            for key, data in dec.items():
                if key not in decoded:
                    decoded[key] = []
                decoded[key].append([msg.timestamp, data])
    except:
        pass

因為我這里是最后把數(shù)據(jù)解析出來轉(zhuǎn)成mf4了,所以構(gòu)建了一個decoded字典,每個key里記一個信號,熟悉mf4的應(yīng)該知道,mf4里每個信號主要包含兩部分,一個是時間戳,一個是數(shù)據(jù),有了這兩個,我們就可以創(chuàng)建mf4文件了,最后放上創(chuàng)建mf4的代碼

from asammdf import MDF,Signal
sigs = []
for k,v in decoded.items():
    timestamps = [i[0] for i in v]
    data = [i[1] for i in v]
    s = Signal(data,timestamps,name=k)
    sigs.append(s)
mdf = MDF()
mdf.append(sigs)
mdf.save("xx.mf4",overwrite=True)

這樣就實現(xiàn)了blf文件的解析與轉(zhuǎn)換,當然,轉(zhuǎn)換的格式很自由,只要熟悉相應(yīng)的格式,比如csv,hdf5,xlsx,json,pickle都可以,因為我們已經(jīng)拿到原始數(shù)據(jù)了,保存成什么格式就很簡單了。

總結(jié)

到此這篇關(guān)于python中用cantools和can工具包解析blf文件的文章就介紹到這了,更多相關(guān)python解析blf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Python字符串顯示u...的解決方式

    關(guān)于Python字符串顯示u...的解決方式

    這篇文章主要介紹了關(guān)于Python字符串顯示u...的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python 函數(shù)內(nèi)部修改外部變量的方法

    python 函數(shù)內(nèi)部修改外部變量的方法

    今天小編就為大家分享一篇python 函數(shù)內(nèi)部修改外部變量的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python unittest模塊用法實例分析

    Python unittest模塊用法實例分析

    這篇文章主要介紹了Python unittest模塊用法,結(jié)合實例形式分析了unittest模塊功能及相關(guān)函數(shù)使用技巧,需要的朋友可以參考下
    2018-05-05
  • python使用mailbox打印電子郵件的方法

    python使用mailbox打印電子郵件的方法

    這篇文章主要介紹了python使用mailbox打印電子郵件的方法,涉及Python打印電子郵件的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Python小進度條顯示代碼

    Python小進度條顯示代碼

    今天小編就為大家分享一篇關(guān)于Python小進度條顯示代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Django中使用pillow實現(xiàn)登錄驗證碼功能(帶刷新驗證碼功能)

    Django中使用pillow實現(xiàn)登錄驗證碼功能(帶刷新驗證碼功能)

    這篇文章主要介紹了Django中使用pillow實現(xiàn)登錄驗證碼功能(帶刷新驗證碼功能),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 深入了解PyQt5中的圖形視圖框架

    深入了解PyQt5中的圖形視圖框架

    PyQt5中圖形視圖框架主要包含三個類:QGraphicsItem圖元類、QGraphicsScene場景類和QGraphicsView視圖類。本文將通過示例詳細講解一下這三個類,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • Pytorch轉(zhuǎn)onnx、torchscript方式

    Pytorch轉(zhuǎn)onnx、torchscript方式

    這篇文章主要介紹了Pytorch轉(zhuǎn)onnx、torchscript方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python爬蟲實現(xiàn)中英翻譯詞典

    python爬蟲實現(xiàn)中英翻譯詞典

    這篇文章主要為大家詳細介紹了python爬蟲實現(xiàn)中英翻譯詞典,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python機器學(xué)習(xí)基礎(chǔ)決策樹與隨機森林概率論

    python機器學(xué)習(xí)基礎(chǔ)決策樹與隨機森林概率論

    這篇文章主要為大家介紹了python機器學(xué)習(xí)基礎(chǔ)決策樹與隨機森林概率論詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11

最新評論