reopen parallel port for each command
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 15 Aug 2010 16:42:40 +0000 (18:42 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 15 Aug 2010 16:42:40 +0000 (18:42 +0200)
scripts/evolis-command.pl

index 353e7ed..75bcbbd 100755 (executable)
@@ -9,25 +9,32 @@ use Data::Dump qw(dump);
 my $dev = '/dev/usb/lp0';
 my $debug = 0;
 
-sysopen(my $parallel, $dev, O_RDWR | O_EXCL) || die "$dev: $!";
+my $parallel;
 
 $|=1;
 print "command> ";
 while(<STDIN>) {
        chomp;
-       
+
        my $send = "\e$_\r";
+
+       # XXX we need to reopen parallel port for each command
+       sysopen( my $parallel, $dev, O_RDWR | O_EXCL) || die "$dev: $!";
+
        foreach my $byte ( split(//,$send) ) {
                warn "#>> ",dump($byte),$/ if $debug;
                syswrite $parallel, $byte, 1;
        }
+
        my $response;
        my $byte;
        while( sysread $parallel, $byte, 1 ) {
                $response .= $byte;
                warn "#<< ",dump($byte),$/ if $debug;
        }
+       close($parallel);
+
        print "<answer ",dump($response),"\ncommand> ";
+
 }
 
-close($parallel);