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