1 package Printer::EVOLIS::Parallel;
7 use Data::Dump qw(dump);
13 Printer::EVOLIS::Parallel - chat with parallel port printer
19 my $p = Printer::EVOLIS::Parallel->new( '/dev/usb/lp0' );
24 my ( $class, $port ) = @_;
25 my $self = { port => $port };
32 my $response = $p->command( 'Rsn' );
37 my ( $self, $send ) = @_;
39 my $port = $self->{port};
40 die "no port $port" unless -e $port;
44 # XXX we need to reopen parallel port for each command
45 sysopen( $parallel, $port, O_RDWR | O_EXCL) || die "$port: $!";
47 foreach my $byte ( split(//,$send) ) {
48 warn "#>> ",dump($byte),$/ if $debug;
49 syswrite $parallel, $byte, 1;
53 # XXX and between send and receive
54 sysopen( $parallel, $port, O_RDWR | O_EXCL) || die "$port: $!";
57 while ( ! sysread $parallel, $response, 1 ) { sleep 0.1 }; # XXX wait for 1st char
59 while( sysread $parallel, $byte, 1 ) {
60 warn "#<< ",dump($byte),$/ if $debug;
61 last if $byte eq "\x00";