Help with USB Printer

2007-12-10 Thread Valerie
Hello all!
 
I have written a PERL/Tk program to take input from a user and to
print a report back based on the data. It works fine on my Windows
XP system with an HP Laserjet 6MP connected to a standard parallel
port (LPT1).  When I copy the program to a different computer
running the same OS but with a different model HP laser printer
(model 1012) connected to the USB port, the program hangs when I try
to print. 
 
Can anyone help me get this program running?  If it would be easier,
I could alternatively print to a standalone network
printer/copier/scanner. This might arguably be better as then the
solution could be used from any of our computers.
 
Here is an excerpt of the essential part of the program. Note, the
variables, $v1c, $vck01 etc. are global variables and are all
valid. As I said, the program works great on my computer.
 
sub vkprint {
format vkfmttop =
  DAILY CASH RECONCILIATION
Denomination  Qty Value Checks   Credit Cards   Paid
Outs

-
.
 
format vkfmt =
@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@.#
#
$text1,  $text2,   $text3,$text4, $text5, $text6
.
 
open LPT, 'LPT1' or die Can't open printer: $!; 

select LPT; 
$~ = 'vkfmt'; 
$^ = 'vkfmttop';
 
$text1 = 1c;
$text2 = $v1c;
$text3 = $v1c * .01;
$text4 = $vck01;
$text5 = $vcc01;
$text6 = $poe01;
write;
 
[Additional write / print commands and calculations deleted for
clarity]
 
print LPT \f;
close LPT;
}


Thank you for your assistance.
 
Valerie
 


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Help with USB Printer

2007-12-10 Thread Kenneth Ölwing

  
 I have written a PERL/Tk program to take input from a user and to
 print a report back based on the data. It works fine on my Windows
 XP system with an HP Laserjet 6MP connected to a standard parallel
 port (LPT1).  When I copy the program to a different computer
 running the same OS but with a different model HP laser printer
 (model 1012) connected to the USB port, the program hangs when I try
 to print. 
   
There are some fundamental assumptions you make that break - the first 
is that the printer can accept straight text, and that printers 
necessarily hook up to LPT1. Both assumptions are woefully out of date 
today. Maybe you can hook up a passthrough of LPT to USB; don't know. 
Hooking LPT1 up to a network printer is easier (net use lpt1 
\\server\printer). But still...

Being able to send plain text wouldn't be true for a pure postscript 
printer, though I seem to recall hearing about ones that magically 
deduced that it was plain text. Also, hooking up to ports is very 
different today, to the point that apps shouldn't really try to fiddle 
with that. Basically, printing is a very abstracted business and by 
talking to the 'right' interfaces your printing will magically work on 
almost any conceivable printer hooked up in almost any conceivable way 
(including using technologies not yet invented).

I think you should check out something like Win32::Printer (no idea if 
it's good, never used it). Or perhaps there are some printing 
abstractions in Tk that will help? Another approach would be to take the 
help of some other app - i.e. talk to Word through COM (i.e. 
Win32::OLE), feeding it the text and triggering the printing from there. 
If Word doesn't exist, maybe something else does - your needs seems 
simple...perhaps Notepad can be utilized by just reading a file you 
prepare and then trigger the print. Or, prepare your output as pdf and 
utilize Adobe reader. Etc. There are a number of ways, though admittedly 
all will require some fanciness...as noted though, the payoff may be 
great as you've then insulated yourself from the physical printer issues...

HTH,

ken1
___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Help with USB Printer

2007-12-10 Thread Jenda Krynicky
On 10 Dec 2007 at 10:50, Kenneth Ölwing wrote:
  I have written a PERL/Tk program to take input from a user and to
  print a report back based on the data. It works fine on my Windows
  XP system with an HP Laserjet 6MP connected to a standard parallel
  port (LPT1).  When I copy the program to a different computer
  running the same OS but with a different model HP laser printer
  (model 1012) connected to the USB port, the program hangs when I try
  to print. 

 snipped
 
 I think you should check out something like Win32::Printer (no idea if
 it's good, never used it). Or perhaps there are some printing
 abstractions in Tk that will help? Another approach would be to take
 the help of some other app - i.e. talk to Word through COM (i.e.
 Win32::OLE), feeding it the text and triggering the printing from
 there. If Word doesn't exist, maybe something else does - your needs
 seems simple...perhaps Notepad can be utilized by just reading a file
 you prepare and then trigger the print. Or, prepare your output as pdf
 and utilize Adobe reader. Etc. There are a number of ways, though
 admittedly all will require some fanciness...as noted though, the
 payoff may be great as you've then insulated yourself from the
 physical printer issues...

According the the registry the command to print a .txt file is

%SystemRoot%\system32\NOTEPAD.EXE /p %1

so you might try that. Save the text into a file and ask notepad to 
print it. Or use Win32::FileOp::ShellExecute like this:

ShellExecute 'Print' = $the_file;

this will work just as well if you later decide to generate the 
report in HTML or any other format assuming you store it with the 
correct file extension.

HTH, Jenda
= [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Help with USB Printer

2007-12-10 Thread Daniel Burgaud
Hi,

Some years ago, I encountered similar problem. My printer dont accept plain
text.
And it uses its own proprietary protocol (Canon LBP800). I can no longer use
the
simple print to LPT syntax..

The only solution was to create GIF/JPEG files from the text I wanted to
print.
Then use MSPaint to print it to printer as graphics. It is indeed slower but
it
turned out to be more flexible. Not only as I able to print text, I can also
combine
graphics etc..

Its been years and I now dump my printables into a PDF file, and use PDF
reader
to print to printer. I find that PDF is faster than creating gif files.
Secondly, I can
collate all what I need to print into a single PDF file.. This process
requires more
step than the previous one - but each has its unique
advantage/disadvantages..

You may want to solve it this way.

Dan

On Dec 9, 2007 10:13 AM, Valerie [EMAIL PROTECTED] wrote:

 Hello all!

 I have written a PERL/Tk program to take input from a user and to
 print a report back based on the data. It works fine on my Windows
 XP system with an HP Laserjet 6MP connected to a standard parallel
 port (LPT1).  When I copy the program to a different computer
 running the same OS but with a different model HP laser printer
 (model 1012) connected to the USB port, the program hangs when I try
 to print.

 Can anyone help me get this program running?  If it would be easier,
 I could alternatively print to a standalone network
 printer/copier/scanner. This might arguably be better as then the
 solution could be used from any of our computers.

 Here is an excerpt of the essential part of the program. Note, the
 variables, $v1c, $vck01 etc. are global variables and are all
 valid. As I said, the program works great on my computer.

 sub vkprint {
 format vkfmttop =
  DAILY CASH RECONCILIATION
 Denomination  Qty Value Checks   Credit Cards   Paid
 Outs
 
 -
 .

 format vkfmt =
 @@[EMAIL PROTECTED]@[EMAIL PROTECTED]@.#
 #
 $text1,  $text2,   $text3,$text4, $text5, $text6
 .

 open LPT, 'LPT1' or die Can't open printer: $!;

 select LPT;
 $~ = 'vkfmt';
 $^ = 'vkfmttop';

 $text1 = 1c;
 $text2 = $v1c;
 $text3 = $v1c * .01;
 $text4 = $vck01;
 $text5 = $vcc01;
 $text6 = $poe01;
 write;

 [Additional write / print commands and calculations deleted for
 clarity]

 print LPT \f;
 close LPT;
 }


 Thank you for your assistance.

 Valerie



 ___
 Perl-Win32-Users mailing list
 Perl-Win32-Users@listserv.ActiveState.com
 To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs