--- 3m-810.pl 2009/06/23 13:50:13 46 +++ 3m-810.pl 2009/06/24 09:30:28 50 @@ -12,6 +12,8 @@ use IO::Socket::INET; +my $debug = 0; + my $meteor_server = '192.168.1.13:4671'; my $meteor_fh; @@ -78,7 +80,7 @@ $client->autoflush(1); my $request = <$client>; - warn "<< $request\n"; + warn "WEB << $request\n" if $debug; if ($request =~ m{^GET (/.*) HTTP/1.[01]}) { my $method = $1; @@ -88,10 +90,10 @@ my ($n,$v) = split(/=/, $p, 2); $param->{$n} = $v; } - warn "<< param: ",dump( $param ); + warn "WEB << param: ",dump( $param ) if $debug; } if ( my $path = static( $client,$1 ) ) { - warn ">> $path"; + warn "WEB >> $path" if $debug; } elsif ( $method =~ m{/scan} ) { my $tags = scan_for_tags(); my $json = {}; @@ -114,7 +116,20 @@ die "server died"; } -my $debug = 0; + +my $last_message = {}; +sub _message { + my $type = shift @_; + my $text = join(' ',@_); + my $last = $last_message->{$type}; + if ( $text ne $last ) { + warn $type eq 'diag' ? '# ' : '', $text, "\n"; + $last_message->{$type} = $text; + } +} + +sub _log { _message('log',@_) }; +sub diag { _message('diag',@_) }; my $device = "/dev/ttyUSB0"; my $baudrate = "19200"; @@ -218,7 +233,7 @@ $parity=$port->parity($parity); $stopbits=$port->stopbits($stopbits); -print "## using $device $baudrate $databits $parity $stopbits debug: $debug verbose: $verbose\n"; +warn "## using $device $baudrate $databits $parity $stopbits debug: $debug verbose: $verbose\n"; # Just in case: reset our timing and buffers $port->lookclear(); @@ -245,26 +260,25 @@ my @tags; - cmd( 'D6 00 05 FE 00 05 FA40', "scan for tags, retry $_", + cmd( 'D6 00 05 FE 00 05 FA40', "scan for tags", 'D6 00 0F FE 00 00 05 ', sub { # 01 E00401003123AA26 941A # seen, serial length: 8 my $rest = shift || die "no rest?"; my $nr = ord( substr( $rest, 0, 1 ) ); if ( ! $nr ) { - print "no tags in range\n"; + _log "no tags in range\n"; update_visible_tags(); meteor( 'info-none-in-range' ); $tags_data = {}; } else { my $tags = substr( $rest, 1 ); - my $tl = length( $tags ); die "wrong length $tl for $nr tags: ",dump( $tags ) if $tl =! $nr * 8; push @tags, uc(unpack('H16', substr($tags, $_ * 8, 8))) foreach ( 0 .. $nr - 1 ); warn "## tags ",as_hex($tags), " [$tl] = ",dump( $tags ) if $debug; - print "$nr tags in range: ", join(',', @tags ) , "\n"; + _log "$nr tags in range: ", join(',', @tags ) , "\n"; meteor( 'info-in-range', join(' ',@tags)); @@ -273,7 +287,7 @@ } ); - warn "## tags: ",dump( @tags ); + diag "tags: ",dump( @tags ); return $tags_data; }