import time # Log CAN messages to a file in Peak format # This function is run once after going on bus def onbusFunc(): # Open the log file global logfile; global msgCnt; logFilename = "c:\logfiles\CANtrace-log-file.trc"; msgCnt = 0; logfile = open( logFilename, "w"); logfile.write( ';$FILEVERSION=1.1\n') logfile.write( ';$STARTTIME=\n') logfile.write( ';\n') logfile.write( '; ' + logFilename + '\n') logfile.write( ';\n') logfile.write( '; Start time: ' + time.strftime("%d.%m.%Y %H:%M:%S") + '\n') logfile.write( ';\n') logfile.write( '; Message Number\n') logfile.write( '; | Time Offset (ms)\n') logfile.write( '; | | Type\n') logfile.write( '; | | | ID (hex)\n') logfile.write( '; | | | | Data Length Code\n') logfile.write( '; | | | | | Data Bytes (hex) ... \n') logfile.write( '; | | | | | | \n') logfile.write( ';---+-- ----+---- --+-- ----+--- + -+ -- -- -- -- -- -- --\n') return False # This function is run once before going off bus def offbusFunc(): # Close the log file so we don't lose data global logfile; logfile.close(); return # This function is run for every message received (and also tx-ack for sent messages) def recvFunc(canmsg): # Log - Log messages to your custom log file global logfile; global msgCnt; global TXRX logLine = '{:>6}'.format(str(msgCnt)) + ")" logLine += '{:>12}'.format(str(canmsg.TimeStamp*1000)) if canmsg.IsTxAck: TXRX = "Tx" else: TXRX = "Rx" logLine += '{:>4}'.format(str(TXRX)) logLine += ' {:04X}'.format(int(canmsg.Id)) logLine += '{:>3}'.format(str(canmsg.Dlc)) + ' ' for byteNum in range(0, canmsg.Dlc): logLine += ' {:02X}'.format(int(canmsg.Data[byteNum])) logfile.write(logLine + "\n"); msgCnt = msgCnt + 1; return True