BEGIN { printf("\nKonvertiere CANHACKER Trace - nach log todo: extended ID püfen \n-----------------cut here---------------------------"); lastsekunde = 0; faktorSekunde = 0; startime = systime(); # aktuelle Uhrzeit als Startzeit nehmen rxcount = 0; candelta = 60; } $2 ~ /([0-9A-F]){3,8}/ { anzahl[$2]+=1; # message[$2] = sprintf("%08s %d %02s %02s %02s %02s %02s %02s %02s %02s", $2,$3,$4,$5, $6,$7,$8,$9,$10,$11); # dlc_message[$2$3] = sprintf("%08s %d %02s %02s %02s %02s %02s %02s %02s %02s", $2,$3,$4,$5, $6,$7,$8,$9,$10,$11); #printf("\n%08s",$2); # CAN-ID rxcount +=1; gsub(",",".",$1); # falls aus USA, Punkte in der Zeitangabe ersetzen. split($1, zeit, "."); # Sekunden und Mili trennen if (zeit[1] < lastsekunde) { # CAN-Hacker überlauf nur 60s abfangen bzw. 100 faktorSekunde += 1; if (lastsekunde > 60) { candelta = 100; } #printf("\nFaktor = %d\n" , faktorSekunde); } #printf(" |%s| + %02d s + %06d µs =>",$1, zeit[1] + (faktorSekunde*candelta) ,zeit[2]*1000); printf("\n(%ld.%06d) can0 %s#",(startime + zeit[1] + (faktorSekunde*candelta)), zeit[2]*1000, $2 ); for(i=0;i<$3;i++){ printf("%s",$(i+4)); } lastsekunde = zeit[1]; } END { # shwll: date +%s,%6N ==> Timestamp inkl. Mikrosecons # log Format: # (1562309553.287685) can0 301#0000000000000000 # ^^timestamp.mikrosecons # asc-Format: # date Fri Jul 5 08:52:33 2019 # base hex timestamps absolute # no internal events logged # 0.012606 1 301 Rx d 8 00 00 00 00 00 00 00 00 # unsortiert ausgeben deaktiviert # for (id in anzahl) { # print message[id], " (", anzahl[id], ")"; # } # print "------------------------------------------------\nEnde Rx-Liste" ##sortiert ausgeben #n=asorti(message,sorted); #for(i=1;i<=n;i++) { # print message[sorted[i]] ," (", anzahl[sorted[i]], ")" ; # } printf ("\n------------------- end cut here-----------------------------\nEnde Canhacker 2 logfile\n %d Messages konvertiert",rxcount); }