From c4156434be6b2fc770f47a153871dde536655347 Mon Sep 17 00:00:00 2001 From: Erick Ahmed Date: Mon, 13 Jul 2026 18:17:34 +0200 Subject: [PATCH] Convert payload to decimal --- parser.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/parser.py b/parser.py index 5cd641f..1ba59cb 100644 --- a/parser.py +++ b/parser.py @@ -48,7 +48,7 @@ def parse_log(input_path: PathLike, out_bus1: PathLike, out_bus2: PathLike) -> N data_bytes = [] for token in tokens: if byte_pattern.match(token): - data_bytes.append(token.upper()) + data_bytes.append(str(int(token, 16))) else: break @@ -63,7 +63,7 @@ def parse_log(input_path: PathLike, out_bus1: PathLike, out_bus2: PathLike) -> N def parse_csv(csv_path: PathLike) -> pl.LazyFrame: """ - Ingests a parsed CSV file, unpacks hex strings into 8 hex columns, + Ingests a parsed CSV file, unpacks decimal strings into 8 integer columns, generates sequential timestamps if missing, and returns a Polars LazyFrame. """ lf = pl.scan_csv(csv_path, schema_overrides={"ID": pl.String, "Data": pl.String}) @@ -82,10 +82,15 @@ def parse_csv(csv_path: PathLike) -> pl.LazyFrame: lf = lf.with_columns(byte_exprs).drop("Data") - return lf.with_columns([ + cast_exprs = [ pl.col("DLC").cast(pl.UInt8), pl.col("Timestamp").cast(pl.Float64) - ]) + ] + + for i in range(8): + cast_exprs.append(pl.col(f"b{i}").cast(pl.UInt8, strict=False)) + + return lf.with_columns(cast_exprs) if __name__ == '__main__': import argparse