use strict; use warnings; package Printer::ESCPOS::Roles::Connection; # PODNAME: Printer::ESCPOS::Roles::Connection # ABSTRACT: Role for Connection Classes for L # # This file is part of Printer-ESCPOS # # This software is copyright (c) 2017 by Shantanu Bhadoria. # # This is free software; you can redistribute it and/or modify it under # the same terms as the Perl 5 programming language system itself. # our $VERSION = '1.006'; # VERSION # Dependencies use 5.010; use Moo::Role; has _buffer => ( is => 'rw', default => '', ); sub write { my ( $self, $raw ) = @_; $self->_buffer( $self->_buffer . $raw ); } sub print { my ( $self, $raw ) = @_; my @chunks; my $printString; if ( defined $raw ) { $printString = $raw; } else { $printString = $self->_buffer; $self->_buffer(''); } my $n = 64; # Size of each chunk in bytes my $initial_pattern = "a$n" x int(length($printString) / $n - 1 ); @chunks = unpack "a$n" x int( ( length($printString) / $n ) - 1 ) . "a*", $printString; for my $chunk (@chunks) { $self->_connection->write($chunk); } } 1; __END__ =pod =head1 NAME Printer::ESCPOS::Roles::Connection - Role for Connection Classes for L =head1 VERSION version 1.006 =head1 METHODS =head2 write Writes prepared data to the module buffer. This data is dispatched to printer with print() method. The print method takes care of buffer control issues. =head2 print If a string is passed then it passes the string to the printer else passes the buffer data to the printer and clears the buffer. $device->printer->print(); # Prints and clears the Buffer. $device->printer->print($raw); # Prints $raw =head1 AUTHOR Shantanu Bhadoria L =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Shantanu Bhadoria. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut