Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write 3 ms digits to ascii to resolve CANoe bug #1362

Merged
merged 4 commits into from
Aug 11, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 9 additions & 0 deletions can/io/asc.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ class ASCWriter(FileIOMessageWriter):
"{bit_timing_conf_ext_data:>8}",
]
)
# Use trigger start time to replace file start time
FORMAT_START_OF_FILE_DATE = "%a %b %d %I:%M:%S.%f %p %Y"
FORMAT_DATE = "%a %b %d %I:%M:%S.{} %p %Y"
FORMAT_EVENT = "{timestamp: 9.6f} {message}\n"
Expand All @@ -366,6 +367,10 @@ def __init__(

# write start of file header
now = datetime.now().strftime(self.FORMAT_START_OF_FILE_DATE)
# Note: CANoe requires that the microsecond field only have 3 digits
idx = now.index(".") # Find the index in the string of the decimal
# Keep decimal and first three ms digits (4), remove remaining digits
now = now.replace(now[idx + 4 : now[idx:].index(" ") + idx], "")
self.file.write(f"date {now}\n")
self.file.write("base hex timestamps absolute\n")
self.file.write("internal events logged\n")
Expand Down Expand Up @@ -400,6 +405,10 @@ def log_event(self, message: str, timestamp: Optional[float] = None) -> None:
formatted_date = time.strftime(
self.FORMAT_DATE.format(mlsec), time.localtime(self.last_timestamp)
)
# changed 2022-08-04, moved file start header here to be one.
j-c-cook marked this conversation as resolved.
Show resolved Hide resolved
self.file.write(f"date {formatted_date}\n")
self.file.write("base hex timestamps absolute\n")
self.file.write("internal events logged\n")
self.file.write(f"Begin Triggerblock {formatted_date}\n")
self.header_written = True
self.log_event("Start of measurement") # caution: this is a recursive call!
Expand Down
4 changes: 2 additions & 2 deletions can/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,13 +213,13 @@ def main() -> None:
print(f"Connected to {bus.__class__.__name__}: {bus.channel_info}")
print(f"Can Logger (Started on {datetime.now()})")

options = {"append": results.append}
if results.file_size:
options = {"append": results.append}
j-c-cook marked this conversation as resolved.
Show resolved Hide resolved
logger = SizedRotatingLogger(
base_filename=results.log_file, max_bytes=results.file_size, **options
)
else:
logger = Logger(filename=results.log_file, **options) # type: ignore
logger = Logger(filename=results.log_file) # type: ignore
j-c-cook marked this conversation as resolved.
Show resolved Hide resolved

try:
while True:
Expand Down