Serial output parser for EM919x.

This commit is contained in:
2023-03-21 10:53:47 +01:00
parent b3073886c8
commit a845747a9c

View 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()