98 lines
2.0 KiB
Perl
98 lines
2.0 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
package Printer::ESCPOS::Roles::Connection;
|
|
|
|
# PODNAME: Printer::ESCPOS::Roles::Connection
|
|
# ABSTRACT: Role for Connection Classes for L<Printer::ESCPOS>
|
|
#
|
|
# 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<Printer::ESCPOS>
|
|
|
|
=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 <shantanu@cpan.org> L<https://www.shantanubhadoria.com>
|
|
|
|
=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
|