From 3337cd5b65653c83c3b4032045669d05174bf87e Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Thu, 23 Apr 2020 10:05:33 -0400 Subject: [PATCH 1/3] Adding header attributes parsing to AscReader --- can/io/asc.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/can/io/asc.py b/can/io/asc.py index c8a2aada3..0f43388fe 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -9,6 +9,7 @@ from datetime import datetime import time import logging +import re from ..message import Message from ..listener import Listener @@ -43,6 +44,30 @@ def __init__(self, file, base="hex"): """ super().__init__(file, mode="r") self.base = base + self.date = None + self.timestamps_format = None + self.internal_events_logged = None + + def _extract_header(self): + for line in self.file: + line = line.strip() + lower_case = line.lower() + if lower_case.startswith("date"): + self.date = line[5:] + elif lower_case.startswith("base"): + try: + _, base, _, timestamp_format = line.split() + except ValueError: + raise Exception("Unsupported header string format: {}".format(line)) + self.base = base + self.timestamps_format = timestamp_format + elif lower_case.endswith("internal events logged"): + if lower_case.startswith("no"): + self.internal_events_logged = False + else: + self.internal_events_logged = True + else: + return @staticmethod def _extract_can_id(str_can_id, base): @@ -61,11 +86,10 @@ def _check_base(base): return BASE_DEC if base == "dec" else BASE_HEX def __iter__(self): + self._extract_header() base = self._check_base(self.base) for line in self.file: # logger.debug("ASCReader: parsing line: '%s'", line.splitlines()[0]) - if line.split(" ")[0] == "base": - base = self._check_base(line.split(" ")[1]) temp = line.strip() if not temp or not temp[0].isdigit(): From 4729594f607c16ad2e316fa8e54273c2bae62dbf Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Thu, 23 Apr 2020 10:18:40 -0400 Subject: [PATCH 2/3] Minor enhancement --- can/io/asc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/can/io/asc.py b/can/io/asc.py index 0f43388fe..e48ebb7bb 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -66,6 +66,7 @@ def _extract_header(self): self.internal_events_logged = False else: self.internal_events_logged = True + return else: return From 96617df60f29d59f42b4548caf9b24c3e76d8bf7 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Thu, 23 Apr 2020 10:19:49 -0400 Subject: [PATCH 3/3] Removing accidentally added import --- can/io/asc.py | 1 - 1 file changed, 1 deletion(-) diff --git a/can/io/asc.py b/can/io/asc.py index e48ebb7bb..1dc8811d7 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -9,7 +9,6 @@ from datetime import datetime import time import logging -import re from ..message import Message from ..listener import Listener