Format: (TBA)
$event_len: 2Ex = 46
$date_str: 4/10/2017
$time_str: 00:00:00
$rec_type_idx: 10x = 16
$source_name: !WV2 !
$data: !CI=427 Lamp dim state=2 [SCATS=0].!
$tail_len: 2Ex = 46
####
$inbuf: >.u[EOT] [DLE]WV2 CI=427 Lamp dim state=2 [SCATS=0].<
Format: C*
$event_len: 2Ex = 46
$date_str: 4/10/2017
$time_str: 00:00:00
$rec_type_idx: 10x = 16
$source_name: !87!
$data: !86!
$tail_len: 32x = 50
Format: C8a6C*
$event_len: 2Ex = 46
$date_str: 4/10/2017
$time_str: 00:00:00
$rec_type_idx: 10x = 16
$source_name: !WV2 !
$data: !128!
$tail_len: 49x = 73
Format: C8a*
$event_len: 2Ex = 46
$date_str: 4/10/2017
$time_str: 00:00:00
$rec_type_idx: 10x = 16
$source_name: !WV2 CI=427 Lamp dim state=2 [SCATS=0].!
$data: !!
$tail_len: 00x = 0
Format: C8a6C33C1
$event_len: 2Ex = 46
$date_str: 4/10/2017
$time_str: 00:00:00
$rec_type_idx: 10x = 16
$source_name: !WV2 !
$data: !128!
$tail_len: 49x = 73
####
use strict;
use warnings;
my @data = ( 0x2E, 0x75, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x10, 0x57, 0x56,
0x32, 0x20, 0x20, 0x20, 0x80, 0x49, 0x3D, 0x34, 0x32, 0x37,
0x20, 0x4C, 0x61, 0x6D, 0x70, 0x20, 0x64, 0x69, 0x6D, 0x20,
0x73, 0x74, 0x61, 0x74, 0x65, 0x3D, 0x32, 0x20, 0x5B, 0x53,
0x43, 0x41, 0x54, 0x53, 0x3D, 0x30, 0x5D, 0x2E );
my @formats = ( "C*", "C8a6C*", "C8a*", "C8a6C33C1" );
my $inbuf = join('', map { chr($_) } @data); # Input buffer
printf("\$inbuf: >%s<\n", $inbuf);
printf("\n");
foreach my $fmt (@formats) {
my $tmpbuf = $inbuf; # In case something's being corrupted
my ($event_len, $year, $mon, $day, $hour, $min, $sec,
$rec_type_idx, $source_name, $data, $tail_len) = unpack($fmt, $tmpbuf);
my $date_str = sprintf("%s/%s/%s", $day, $mon, $year+1900);
my $time_str = sprintf("%02d:%02d:%02d", $hour, $min, $sec);
$rec_type_idx &= 0x1F; # Only use b0-b6
printf(" Format: %s\n", $fmt);
printf(" \$event_len: %02Xx = %d\n", $event_len, $event_len);
printf(" \$date_str: %s\n", $date_str);
printf(" \$time_str: %s\n", $time_str);
printf("\$rec_type_idx: %02Xx = %d\n", $rec_type_idx, $rec_type_idx);
printf(" \$source_name: !%s!\n", $source_name);
printf(" \$data: !%s!\n", $data);
printf(" \$tail_len: %02Xx = %d\n", $tail_len, $tail_len);
printf("\n");
}