From dd27510cbba84071dba3ebb4cb28dd221087d387 Mon Sep 17 00:00:00 2001 From: ntruchsess <> Date: Thu, 26 Jun 2014 21:59:33 +0000 Subject: [PATCH] FRM: fix a crucial bug in perl-firmata parser skipping single 0x30 bytes on fast machines git-svn-id: https://svn.fhem.de/fhem/trunk@6169 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/Device/Firmata.pm | 37 +++++++++++++----------- fhem/FHEM/lib/Device/Firmata/Platform.pm | 4 +-- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/fhem/FHEM/lib/Device/Firmata.pm b/fhem/FHEM/lib/Device/Firmata.pm index 517a706f7..5e866d65f 100644 --- a/fhem/FHEM/lib/Device/Firmata.pm +++ b/fhem/FHEM/lib/Device/Firmata.pm @@ -15,33 +15,36 @@ Device::Firmata - Perl interface to Firmata for the arduino platform. =head1 VERSION -Version 0.56 +Version 0.59 =cut -our $VERSION = '0.56'; +our $VERSION = '0.59'; our $DEBUG = 0; =head1 SYNOPSIS -use strict; -use warnings; -use Device::Firmata::Constants qw/ :all /; -use Device::Firmata; -$|++; -use Time::HiRes 'sleep'; + use strict; + use warnings; -my $led_pin = 13; + use Device::Firmata::Constants qw/ :all /; + use Device::Firmata; -my $device = Device::Firmata->open('/dev/ttyUSB0') or die "Could not connect to Firmata Server"; -$device->pin_mode($led_pin=>PIN_OUTPUT); -my $iteration = 0; -while (1) { - my $strobe_state = $iteration++%2; - $device->digital_write($led_pin=>$strobe_state); - sleep 0.5; -} + use Time::HiRes 'sleep'; + + $|++; + + my $led_pin = 13; + + my $device = Device::Firmata->open('/dev/ttyUSB0') or die "Could not connect to Firmata Server"; + $device->pin_mode($led_pin=>PIN_OUTPUT); + my $iteration = 0; + while (1) { + my $strobe_state = $iteration++%2; + $device->digital_write($led_pin=>$strobe_state); + sleep 0.5; + } =head1 SUBROUTINES/METHODS diff --git a/fhem/FHEM/lib/Device/Firmata/Platform.pm b/fhem/FHEM/lib/Device/Firmata/Platform.pm index 17e1269ee..6a93d1208 100644 --- a/fhem/FHEM/lib/Device/Firmata/Platform.pm +++ b/fhem/FHEM/lib/Device/Firmata/Platform.pm @@ -843,8 +843,8 @@ sub poll { # -------------------------------------------------- my $self = shift; - my $buf = $self->{io}->data_read(2048) or return; - my $messages = $self->{protocol}->message_data_receive($buf); + my $buf = $self->{io}->data_read(2048); + my $messages = $self->{protocol}->message_data_receive($buf) or return; $self->messages_handle($messages); return $messages; }