5 use Data::Dump qw(dump);
10 my $debug = $ENV{DEBUG};
14 warn "## protocol = ",dump( $protocol ) if $debug;
17 my ( $up_down, $hex ) = @_;
21 my $raw = join('', map { chr(hex($_)) } split(/\s+/,$hex));
23 warn "raw = ", hex_dump($raw);
25 my $hash = protocol_decode( $up_down, $raw );
27 warn "hash = ",dump($hash);
29 my $function_code = $hash->{function_code} || die "no function_code";
30 my $fc_desc = $function_code_description->{$up_down}->{$function_code} || die "no function_code_description for $up_down $function_code";
31 print " function_code=$function_code ",
33 " ver=", $hash->{ver},
34 " len=", $hash->{len},
37 foreach my $data_id ( @{ $hash->{data_id_order} } ) {
40 unpack('H*', chr($data_id)),
41 $protocol->{$data_id}->{description},
42 $hash->{data_id}->{$data_id},
43 "hex:" . unpack('H*', $hash->{data_range}->{$data_id}),
44 "len:" . $hash->{data_len}->{$data_id},
45 "fmt:" . $protocol->{$data_id}->{pack_fmt},
46 "range:" . $protocol->{$data_id}->{range},
47 "remark:" . $protocol->{$data_id}->{remark}
54 my ( $timestamp, $sensor, $imei, $up_down );
59 if ( m{^(\d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\d).*Inclinometer/([^/]+)/([^/]+)/(\w+)} ) {
61 $raw =~ s{^\s+}{}; # strip leading spaces
62 print "## $timestamp $sensor $imei $up_down $raw\n";
63 print_hex( $up_down, $raw );
66 ( $timestamp, $sensor, $imei, $up_down ) = ( $1, $2, $3, $4 );
67 $stat->{$sensor}->{$imei}->{$up_down}++;
70 s/\s\s.+$//g; # remove ascii
80 $raw =~ s{^\s+}{}; # strip leading spaces
81 print "## $timestamp $sensor $imei $up_down $raw\n";
82 print_hex( $up_down, $raw );
85 print "stat = ",dump($stat), "\n";