クラスを用いてMF4データをワークメモリ内に保持する
最近はPCに搭載される、物理メモリのサイズも大きい上、
仮想メモリもSSDなどのおかげで十分高速に動作するので、MF4 VIewerも、
On Memory で動作させることで高速化が期待できます。
まず、workMemの型として、空のDatクラスを定義し、self.value / self.timeを含むDataClassクラスをjsonで指定された変数分作成し、
workMemの内容をプロットし、Canvasへ表示しています。
従来は、ループ内でmdfExtractorにより読み出されたsignalData, signalTimeを順次プロットしていましたが、
概要部分をworkMem内に保持された変数を表示するようにしています。
# クラスの定義
class Dat:
pass
class DataClass:
def __init__(self):
self.value = ""
self.time = ""
def Plot_Canvas(mdfData, jsonFile, mdfList):
workMem = Dat()
# mdfDataの中からmdfListで指定されたすべてのデータを順番にプロットする
dictLength = len(mdfList)
load_dict = loadJsonFile(jsonFile)
# mdfListで指定されたデータを繰り返す
for i in range (dictLength):
selectSignal = mdfList[i]
measured_name = load_dict[i]["data_list"]
display_name = load_dict[i]["display_name"]
signalData, signalTime = mdfExtractor(mdfData, selectSignal)
exec("workMem.{} = DataClass()".format(display_name)) # 表示名のDataClassを作成
exec("workMem.{}.value = signalData".format(display_name)) # DataClass.valueにsignalDataを格納
exec("workMem.{}.time = signalTime".format(display_name)) # DataClass.timeにsignalTimeっを格納
try:
dataName = "workMem." + display_name + ".value"
timeName = "workMem." + display_name + ".time"
data = eval(dataName)
t_data = eval(timeName)
plt.plot(t_data,data)
except:
print(selectSignal,"is skipped")
return workMem
#PySimpleGUI, #asammdf, #MF4, #MDF, #class, #exec, #eval
最近のコメント