国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python中使用cantools和can工具包解析blf文件

這篇具有很好參考價(jià)值的文章主要介紹了python中使用cantools和can工具包解析blf文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、工具包安裝

pip install cantools python-can

二、解析blf文件

一般情況下,解析blf需要dbc文件,當(dāng)然其實(shí)不用dbc也可以,只不過解析比較麻煩,推薦還是配合dbc解析,這個(gè)也是我們最常用的辦法。所以要用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í)間戳解析出來了,其它的數(shù)據(jù)都是16進(jìn)制,沒法直接看,當(dāng)然我們?nèi)绻煜lf格式,可以自己把數(shù)據(jù)還原出來,但是既然已經(jīng)用第三方庫,我們當(dāng)然就不用自己解析了,而且仔細(xì)觀察一下即可發(fā)現(xiàn),之前的加載dbc并沒有用上,所以這時(shí)一個(gè)重要的函數(shù)登場(chǎng)了,那就是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

因?yàn)槲疫@里是最后把數(shù)據(jù)解析出來轉(zhuǎn)成mf4了,所以構(gòu)建了一個(gè)decoded字典,每個(gè)key里記一個(gè)信號(hào),熟悉mf4的應(yīng)該知道,mf4里每個(gè)信號(hào)主要包含兩部分,一個(gè)是時(shí)間戳,一個(gè)是數(shù)據(jù),有了這兩個(gè),我們就可以創(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)

這樣就實(shí)現(xiàn)了blf文件的解析與轉(zhuǎn)換,當(dāng)然,轉(zhuǎn)換的格式很自由,只要熟悉相應(yīng)的格式,比如csv,hdf5,xlsx,json,pickle都可以,因?yàn)槲覀円呀?jīng)拿到原始數(shù)據(jù)了,保存成什么格式就很簡單了。文章來源地址http://www.zghlxwxcb.cn/news/detail-505939.html

到了這里,關(guān)于python中使用cantools和can工具包解析blf文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • IPOP 使用詳解 (附IPOP工具包)

    IPOP 使用詳解 (附IPOP工具包)

    IPOP 是一款設(shè)備調(diào)試終端工具,功能很強(qiáng)大,集合很多服務(wù)、調(diào)試、查看手段于一身,主要功能如下: IP 地址動(dòng)態(tài)綁定功能; 路由信息查詢和配置功能; MAC 地址信息查詢和修改功能; MAC 、主機(jī)信息掃描功能; 本機(jī)網(wǎng)絡(luò)報(bào)文統(tǒng)計(jì)功能; 本機(jī)端口列表、遠(yuǎn)程端口掃描功能;

    2024年02月16日
    瀏覽(21)
  • 圖像處理工具包Pillow的使用分享

    Pillow 是 Python 中一個(gè)流行的圖像處理庫,它是 PIL(Python Imaging Library)的一個(gè)友好的分支版本。Pillow 提供了許多功能,使得圖像處理變得容易和方便。下面是一些基本用法和示例: 安裝 Pillow 首先,你需要安裝 Pillow。這可以通過 pip 命令輕松完成: 基本操作 1. 導(dǎo)入圖像 2. 顯

    2024年01月21日
    瀏覽(30)
  • UnxUtils工具包,Windows下使用Linux命令

    UnxUtils工具包,Windows下使用Linux命令

    最近寫批處理多了,發(fā)現(xiàn)Windows下的bat批處理命令,相比Linux的命令,無論是功能還是多樣性,真的差太多了。但有時(shí)候又不得不使用bat批處理,好在今天發(fā)現(xiàn)了一個(gè)不錯(cuò)的工具包:UnxUtils,這個(gè)工具包包含了將近xx個(gè)命令程序,可以在Windows下像使用Linux中的命令一樣使用它們,

    2024年02月16日
    瀏覽(18)
  • 【Java】YAML讀寫常用工具包及使用示例

    YAML是一種常用的數(shù)據(jù)序列化格式,在Java應(yīng)用程序中讀寫YAML數(shù)據(jù)是常見的任務(wù)。本文介紹了三個(gè)受歡迎的Java工具包:SnakeYAML、Jackson Dataformat YAML和YAMLBeans,它們都提供了讀寫YAML數(shù)據(jù)的功能。本文將逐一介紹這些工具包的特點(diǎn)、Maven依賴配置,并給出使用示例。最后,本文總結(jié)

    2024年02月04日
    瀏覽(20)
  • Coreutils工具包,Windows下使用Linux命令

    Coreutils工具包,Windows下使用Linux命令

    之前總結(jié)過兩篇有關(guān)【如何在Windows系統(tǒng)下使用Linux的常用命令】的文章: GnuWin32,Windows下使用Linux命令 UnxUtils工具包,Windows下使用Linux命令 今天再推薦一個(gè)類似的工具包 Coreutils GNU core utilities 是GNU操作系統(tǒng)基本的文件、shell和文本操作實(shí)用程序。這些是每個(gè)操作系統(tǒng)上都應(yīng)該

    2024年02月12日
    瀏覽(60)
  • 用好Python自然語言工具包-- 實(shí)例“基于本地知識(shí)庫的自動(dòng)問答”

    用好Python自然語言工具包-- 實(shí)例“基于本地知識(shí)庫的自動(dòng)問答”

    首先鳴謝thomas-yanxin 本問中示例來自他在GitHub上的開源項(xiàng)目“基于本地知識(shí)庫的自動(dòng)問答”,鏈接如下: thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的針對(duì)本地知識(shí)庫的自動(dòng)問答 (github.com) 目錄 1. 基礎(chǔ)知識(shí): 2. NLTK庫的使用 3. 實(shí)例代碼分析 設(shè)備的定義 函數(shù)定義:從網(wǎng)

    2024年02月05日
    瀏覽(27)
  • 用了這8個(gè) Python 數(shù)據(jù)挖掘工具包,生產(chǎn)力明顯得到了提升!

    用了這8個(gè) Python 數(shù)據(jù)挖掘工具包,生產(chǎn)力明顯得到了提升!

    在進(jìn)行數(shù)據(jù)科學(xué)時(shí),可能會(huì)浪費(fèi)大量時(shí)間編碼并等待計(jì)算機(jī)運(yùn)行某些東西。所以我選擇了一些 Python 庫,可以幫助你節(jié)省寶貴的時(shí)間。 喜歡記得收藏、關(guān)注、點(diǎn)贊,文末送技術(shù)交流和資料 Optuna 是一個(gè)開源的超參數(shù)優(yōu)化框架,它可以自動(dòng)為機(jī)器學(xué)習(xí)模型找到最佳超參數(shù)。 最基

    2024年02月01日
    瀏覽(20)
  • Python mpl_toolkits.mplot3d工具包繪制三維圖

    Python mpl_toolkits.mplot3d工具包繪制三維圖

    在Python中我們可以導(dǎo)入 mplot3d 工具包來繪制三維圖。 在 Matplotlib 1.0.0 之前,每個(gè)圖形只能創(chuàng)建一個(gè) Axes3D ,需要被直接定義為 ax = Axes3D 在 Matplotlib 3.2.0 之前,必須導(dǎo)入 mpl_toolkits.mplot3d 模塊將 Projection=\\\'3d\\\' 傳遞給 Figure.add_subplot 3維坐標(biāo)系通過將 Projection=\\\'3d\\\' 傳遞給

    2024年02月12日
    瀏覽(23)
  • 基因表達(dá)差異分析R工具包DESeq2的詳細(xì)使用方法和使用案例

    基因表達(dá)差異分析R工具包DESeq2的詳細(xì)使用方法和使用案例

    DESeq2是一種常用的差異表達(dá)基因分析工具,可用于RNA-seq數(shù)據(jù)的差異表達(dá)分析。下面是DESeq2的詳細(xì)使用步驟和全部腳本示例。 文章參考 Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2 | Genome Biology | Full Text (biomedcentral.com) bioconda源對(duì)工具包的介紹: Bioconductor - DES

    2024年04月15日
    瀏覽(25)
  • JAVA深化篇_26——Apache commons-io工具包的使用

    Apache基金會(huì)介紹 Apache軟件基金會(huì)(也就是Apache Software Foundation,簡稱為ASF),是專門為支持開源軟件項(xiàng)目而辦的一個(gè)非盈利性組織。在它所支持的Apache項(xiàng)目與子項(xiàng)目中,所發(fā)行的軟件產(chǎn)品都遵循Apache許可證(Apache License)。 官方網(wǎng)址為:www.apache.org 。 很多著名的Java開源項(xiàng)目

    2024年02月06日
    瀏覽(69)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包