Serial output parser for EM919x.
This commit is contained in:
71
format_serial_txt_to_csv_EM9190.py
Executable file
71
format_serial_txt_to_csv_EM9190.py
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import csv
|
||||||
|
import datetime
|
||||||
|
import re
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
KEY_VALUE_REGEX = r"(.+):(.+)"
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument("-f", "--file", required=True, help="Input txt file.")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
file = open(args.file, "r")
|
||||||
|
content = file.read()
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
header = ["time"]
|
||||||
|
csv_lines = list()
|
||||||
|
p = re.compile(KEY_VALUE_REGEX)
|
||||||
|
|
||||||
|
for part in content.split(";;;"):
|
||||||
|
if part == "":
|
||||||
|
break
|
||||||
|
part = part.replace("\t", "\n").strip()
|
||||||
|
|
||||||
|
csv_line = list()
|
||||||
|
time = None
|
||||||
|
for line in part.split("\n"):
|
||||||
|
if not line.startswith("!") or line == "" or line == "\n":
|
||||||
|
if time is None:
|
||||||
|
time = line
|
||||||
|
csv_line.append(time)
|
||||||
|
m = p.match(line)
|
||||||
|
if m:
|
||||||
|
key = m.group(1).strip().replace(" ", "_")
|
||||||
|
value = m.group(2).replace("MHz", "").strip()
|
||||||
|
|
||||||
|
if key not in header:
|
||||||
|
header.append(key)
|
||||||
|
|
||||||
|
csv_line.append(value)
|
||||||
|
if len(csv_line) > 1:
|
||||||
|
#print(csv_line)
|
||||||
|
csv_lines.append(csv_line)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
outputfile = open(args.file.replace("txt", "csv"), "w")
|
||||||
|
writer = csv.writer(outputfile, delimiter=",", lineterminator="\n", escapechar='\\')
|
||||||
|
writer.writerow(header)
|
||||||
|
#print(all_csv_lines)
|
||||||
|
for l in csv_lines:
|
||||||
|
#print(l)
|
||||||
|
writer.writerow(l)
|
||||||
|
|
||||||
|
outputfile.close()
|
||||||
|
|
||||||
|
outputfile = open(args.file.replace("txt", "csv"), "r")
|
||||||
|
serial_df = pd.read_csv(outputfile)
|
||||||
|
serial_df["datetime"] = pd.to_datetime(
|
||||||
|
serial_df["time"].apply(lambda x: datetime.datetime.fromtimestamp(x))
|
||||||
|
)
|
||||||
|
serial_df.to_csv(args.file.replace("txt", "csv"))
|
||||||
|
outputfile.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user