I've mentioned Gunilla before. Here is a small Perl program, based on code by Yaakov.
Usage :
set-message- Sets the message on default printer to "Insert Coin"
set-message something- Sets the message on default printer to "something"
set-message 10.0.0.12 "Hello World"- Sets the message on printer at 10.0.0.12 to "Hello World"
I made my life harder (of course) by supporting \n. To do this, the program needs to know the width of your display ($WIDTH). Adding something like ~/bin/gunilla $(date +%A\\n%Y/%m/%d) to a crontab might be useful.
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
# Configuration:
my $WIDTH = 16;
my $peeraddr = 'gunilla';
my $rdymsg;
if( @ARGV == 0 ) {
$rdymsg = 'Insert Coin';
}
elsif( @ARGV == 1 ) {
$rdymsg = $ARGV[0];
}
elsif( @ARGV == 2 ) {
( $peeraddr, $rdymsg ) = @ARGV;
}
else {
die "usage: $0 [] [\"\"]\n";
}
$rdymsg =~ s{^(.*)(\n|\\n)}{newline($1)}e;
my $socket = IO::Socket::INET->new(
PeerAddr => $peeraddr,
PeerPort => "9100",
Proto => "tcp",
Type => SOCK_STREAM
) or die "Could not create socket: $!";
my $data = <<EOJ;
\e%-12345X\@PJL JOB
\@PJL RDYMSG DISPLAY="$rdymsg"
\@PJL EOJ
\e%-12345X
EOJ
print $socket $data;
sub newline
{
my( $text ) = @_;
my $l = $WIDTH - length $text;
$l = 1 if $l < 1;
return $text. ( ' ' x $l );
}
No comments:
Post a Comment