1.1.0版本
This commit is contained in:
108
UniTAP/dev/ports/modules/capturer/event/result_event.py
Normal file
108
UniTAP/dev/ports/modules/capturer/event/result_event.py
Normal file
@@ -0,0 +1,108 @@
|
||||
import warnings
|
||||
|
||||
from UniTAP.dev.modules.capturer.result_object import ResultObject
|
||||
from UniTAP.libs.lib_tsi.tsi import TSIEventParser
|
||||
from .event_utils import save_to_bin_file, save_to_csv_file, save_to_txt_file, save_to_html_file
|
||||
from .event_types import EventFileFormat
|
||||
|
||||
|
||||
class ResultEventObject(ResultObject):
|
||||
"""
|
||||
Class `ResultEventObject` inherited from class `ResultObject`.
|
||||
Class `ResultEventObject` allows saving captured events to file `save_to_file_selected_event` or
|
||||
`save_to_file_all_events`.
|
||||
Also has all the `ResultObject` functionality.
|
||||
"""
|
||||
|
||||
def __init__(self, fw_info: dict):
|
||||
super().__init__()
|
||||
self.__parsed_buffer = []
|
||||
self.__fw_info = fw_info
|
||||
self.__long_type_string = False
|
||||
|
||||
def __str__(self):
|
||||
return f"Start capture time: {self.start_capture_time}\n" \
|
||||
f"End capture time: {self.end_capture_time}\n" \
|
||||
f"Timestamp: {self.timestamp.__str__()}\n"
|
||||
|
||||
def save_to_file_selected_event(self, file_format: EventFileFormat, path: str, index: int):
|
||||
"""
|
||||
|
||||
Saving selected event to file. Supported file formats describe in `EventFileFormat`.
|
||||
|
||||
Args:
|
||||
file_format (`PictureFileFormat`) - file format
|
||||
path (str) - path to save
|
||||
index (int) - number of event in list
|
||||
"""
|
||||
if len(self.buffer) > 0:
|
||||
if file_format == EventFileFormat.BIN:
|
||||
save_to_bin_file(path=path, events=self.buffer, index=index)
|
||||
elif file_format == EventFileFormat.TXT:
|
||||
if len(self.__parsed_buffer) == 0:
|
||||
self.__parse_buffer()
|
||||
save_to_txt_file(path=path, events=self.__parsed_buffer, index=index)
|
||||
elif file_format == EventFileFormat.HTML:
|
||||
raise NotImplementedError('Temporary not supported to txt files.')
|
||||
else:
|
||||
raise ValueError(f"Incorrect file format. Available formats: "
|
||||
f"{EventFileFormat.BIN.name}, {EventFileFormat.TXT.name}, "
|
||||
f"{EventFileFormat.HTML.name}.\n"
|
||||
f"Transferred audio format: {file_format.name}")
|
||||
self.__parsed_buffer.clear()
|
||||
else:
|
||||
warnings.warn("Buffer size is equal 0.")
|
||||
|
||||
def save_to_file_all_events(self, file_format: EventFileFormat, path: str):
|
||||
"""
|
||||
|
||||
Saving all events to file. Supported file formats describe in `EventFileFormat`.
|
||||
|
||||
Args:
|
||||
file_format (`EventFileFormat`) - file format
|
||||
path (str) - path to save
|
||||
"""
|
||||
if len(self.buffer) > 0:
|
||||
if file_format == EventFileFormat.BIN:
|
||||
if path.find(".bin") == -1:
|
||||
path += ".bin"
|
||||
save_to_bin_file(path=path, events=self.buffer)
|
||||
elif file_format == EventFileFormat.CSV:
|
||||
if path.find(".csv") == -1:
|
||||
path += ".csv"
|
||||
if len(self.__parsed_buffer) == 0:
|
||||
self.__parse_buffer()
|
||||
save_to_csv_file(path=path, events=self.__parsed_buffer)
|
||||
elif file_format == EventFileFormat.TXT:
|
||||
if path.find(".txt") == -1:
|
||||
path += ".txt"
|
||||
if len(self.__parsed_buffer) == 0:
|
||||
self.__parse_buffer()
|
||||
save_to_txt_file(path=path, events=self.__parsed_buffer)
|
||||
elif file_format == EventFileFormat.HTML:
|
||||
if path.find(".html") == -1:
|
||||
path += ".html"
|
||||
if len(self.__parsed_buffer) == 0:
|
||||
self.__parse_buffer()
|
||||
save_to_html_file(path=path, events=self.__parsed_buffer, fw_info=self.__fw_info,
|
||||
long_type_string=self.__long_type_string)
|
||||
else:
|
||||
raise ValueError(f"Incorrect file format. Available formats: "
|
||||
f"{EventFileFormat.BIN.name}, {EventFileFormat.TXT.name}, "
|
||||
f"{EventFileFormat.HTML.name}.\n"
|
||||
f"Transferred audio format: {file_format.name}")
|
||||
self.__parsed_buffer.clear()
|
||||
else:
|
||||
warnings.warn("Buffer size is equal 0.")
|
||||
|
||||
def __parse_buffer(self):
|
||||
with TSIEventParser() as parser:
|
||||
for index, item in enumerate(self.buffer):
|
||||
if len(item.data) > 12:
|
||||
res = parser.parse(item.data, to_dict=True)
|
||||
if res[0] < 0:
|
||||
warnings.warn(f"Cannot parse element {index}. Error {res[0]}")
|
||||
else:
|
||||
self.__parsed_buffer.append(res[1])
|
||||
if len(res[1].get('type')) > 8 and self.__long_type_string is False:
|
||||
self.__long_type_string = True
|
||||
Reference in New Issue
Block a user