candas を使用して Python で blf ファイルを解析および変換する

前回の記事では、cantools と python-can ツールキットを使用して、最初に dbc ファイルをロードし、次に blf ファイルを解析するという blf 解析方法を紹介しましたが、実際には、この作業を行うことができるより高度なパッケージがあります。カンダス。

実は cantools や python-can も candas の底辺で使われているのですが、より高いレベルでパッケージ化されており、より豊富な機能を提供しています. データを直接データフレームに変換したり、描画することもできます. candas の使い方を見てみましょう. blf ドキュメントを分析します。

candas は cantools と python-can に基づいて開発されているため、dbc ファイルも必要ですが、その特別なライブラリは、フォルダー パラメーターを渡す必要がある、つまり、dbc ファイルが配置されているフォルダーを渡す必要があることです。パラメーター リストに移動すると、blf ファイルはファイル名を渡す必要があります。つまり、拡張子 ".blf" は付けません。具体的なコードは次のとおりです。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import candas as cd
from asammdf import MDF
database_logpath = r"C:\Users\master01\Downloads\1.28\1-28-(20-21)"
dbc_logpath = r"C:/Users/master01\Downloads/"
db_version = "LR19"
dl = cd.load_dbc(dbc_logpath)

log_data = cd.from_file(dl, database_logpath, verbose=True)
s1 = log_data['FCU_Stk_ClntIn_Pres_kPa']
#print(s1[0][0],s1[1][0],s1[2][0])

all_sig_names = []
for msg in dl.messages:
    for sig in msg.signals:

        all_sig_names.append(sig.name)
df = log_data.to_dataframe(all_sig_names,mode="sampling",frequency=1)
df.set_index('time',inplace=True)
mdf = MDF()
mdf.append(df)
mdf.save("blfconvert.mf4",overwrite=True)

ご覧のとおり、最初のステップは dbc ファイルをロードすることです. dbc が配置されているフォルダーを渡す必要があることに注意してください.カタログ型. このクラスには to_dataframe メソッドがあります. このメソッドはデータを直接データフレームに変換できるのでとても便利です. このメソッドにはいくつかのパラメータがあります. 1つ目は変換する信号名のリストで, 2つ目は変換モードです. blf は mf4 と同じであるため、デフォルトは concat であり、データを許可します 元のデータを可能な限り保持できるように整列されていませんが、転送されたデータは比較的大きいです 別のモードはサンプリングであり、その後サンプリングが続きます転送されるデータが整列され、頻度がすべて一貫しているように、データは以前のスキーマよりも少し小さくなります。最後に、私のコードはデータフレームを mf4 に変換します。これは canape を使用して表示する方が便利です。

このライブラリは実際には非常に使いやすいのですが、開発ツールは結局このライブラリを使用せず、基盤となるライブラリである cantools と python-can を使用して解析を行った.理由は、このライブラリを使用した後、実行中に機能が問題にならなかったからです.開発中ですが、pyinstallerを使ってパッケージングしたら問題があり、いつもエラーが出ます情報を確認したところ、共有ライブラリの競合が発生しているようで、結局解決されず、断念しました。パッケージ化されていないならまだいい、高水準APIはやっぱり便利だけど、パラメータがよくわからない。

もちろん、candasには他にもいろいろなグラフを描いたり、何を使えばいいかわからない機能がたくさんあるので、興味のある方は公式ドキュメントをチェックしてみてください。

おすすめ

転載: blog.csdn.net/zy1620454507/article/details/129856152