@@ -260,12 +260,15 @@ class TRCWriter(TextIOMessageWriter):
260
260
FORMAT_MESSAGE = (
261
261
"{msgnr:>7} {time:13.3f} DT {channel:>2} {id:>8} {dir:>2} - {dlc:<4} {data}"
262
262
)
263
+ FORMAT_MESSAGE_V1_1 = "{msgnr:>6}){time:12.3f} Rx {id:>8} {dlc:<1} {data}"
264
+
263
265
FORMAT_MESSAGE_V1_0 = "{msgnr:>6}) {time:7.0f} {id:>8} {dlc:<1} {data}"
264
266
265
267
def __init__ (
266
268
self ,
267
269
file : Union [StringPathLike , TextIO ],
268
270
channel : int = 1 ,
271
+ fileversion : int = TRCFileVersion .V1_1 ,
269
272
** kwargs : Any ,
270
273
) -> None :
271
274
"""
@@ -287,7 +290,7 @@ def __init__(
287
290
self .header_written = False
288
291
self .msgnr = 0
289
292
self .first_timestamp = None
290
- self .file_version = TRCFileVersion . V2_1
293
+ self .file_version = fileversion
291
294
self ._msg_fmt_string = self .FORMAT_MESSAGE_V1_0
292
295
self ._format_message = self ._format_message_init
293
296
@@ -312,6 +315,33 @@ def _write_header_V1_0(self, start_time: datetime) -> None:
312
315
]
313
316
self .file .writelines (line + "\n " for line in lines )
314
317
318
+ def _write_header_V1_1 (self , start_time : datetime ) -> None :
319
+ header_time = start_time - datetime (year = 1899 , month = 12 , day = 30 )
320
+ lines = [
321
+ ";$FILEVERSION=1.1" ,
322
+ f";$STARTTIME={ header_time / timedelta (days = 1 )} " ,
323
+ ";$COLUMNS=N,O,T,B,I,d,R,L,D" ,
324
+ ";" ,
325
+ f"; { self .filepath } " ,
326
+ ";" ,
327
+ f"; Start time: { start_time } " ,
328
+ "; Generated by python-can TRCWriter" ,
329
+ ";-------------------------------------------------------------------------------" ,
330
+ "; Bus Name Connection Protocol" ,
331
+ "; N/A N/A N/A N/A" ,
332
+ ";-------------------------------------------------------------------------------" ,
333
+ "; Message Number" ,
334
+ "; | Time Offset (ms)" ,
335
+ "; | | Type" ,
336
+ "; | | | ID (hex)" ,
337
+ "; | | | | Data Length" ,
338
+ "; | | | | | Data Bytes (hex) ..." ,
339
+ "; | | | | | |" ,
340
+ ";---+-- ----+---- --+-- ----+--- + -+ -- -- -- -- -- -- --" ,
341
+ ]
342
+ self .file .writelines (line + "\n " for line in lines )
343
+
344
+
315
345
def _write_header_V2_1 (self , start_time : datetime ) -> None :
316
346
header_time = start_time - datetime (year = 1899 , month = 12 , day = 30 )
317
347
lines = [
@@ -362,6 +392,9 @@ def _format_message_init(self, msg, channel):
362
392
elif self .file_version == TRCFileVersion .V2_1 :
363
393
self ._format_message = self ._format_message_by_format
364
394
self ._msg_fmt_string = self .FORMAT_MESSAGE
395
+ elif self .file_version == TRCFileVersion .V1_1 :
396
+ self ._format_message = self ._format_message_by_format
397
+ self ._msg_fmt_string = self .FORMAT_MESSAGE_V1_1
365
398
else :
366
399
raise NotImplementedError ("File format is not supported" )
367
400
@@ -375,6 +408,8 @@ def write_header(self, timestamp: float) -> None:
375
408
self ._write_header_V1_0 (start_time )
376
409
elif self .file_version == TRCFileVersion .V2_1 :
377
410
self ._write_header_V2_1 (start_time )
411
+ elif self .file_version == TRCFileVersion .V1_1 :
412
+ self ._write_header_V1_1 (start_time )
378
413
else :
379
414
raise NotImplementedError ("File format is not supported" )
380
415
self .header_written = True
0 commit comments