another problem on 386i w/ laserwriter II
Robert Viduya
robert%shangri-la at gatech.edu
Thu Feb 2 17:57:48 AEST 1989
This is the wrong newsgroup for this, but I've seen a number of queries on
here about control-D's in PostScript files and how to talk to a PostScript
printer over a serial line. I'm getting tired of answering each via mail,
so I thought I'd just post the info. Anyway, here's the scoop on ^D in
PostScript files being sent over serial lines to a PostScript filter.
This information works on an Apple LaserWriter+ and IINTX and I presume it
will work with any true Adobe PostScript printer that has a serial
interface.
Besides the Xon/Xoff flow control protocol, PostScript printers support a
"job" protocol. Essentially it's this:
o Each job sent to the printer must be terminated with an ascii EOT
(that's a control-D to us peasants). This character tells the
printer to reclaim all memory and any other resources used by the
job, as well as flushing any PostScript operators that were defined
by that job. It essentially does a soft-reset in preparation for the
next job.
o The PostScript printer is NOT necessarily ready to process another
incoming job after the ^D has been received. It may still be
working on the current job. It is NOT a good idea to start sending
another job down the line until the current job has completely
finished printing. Doing so sometimes messes up the interpreter.
At the very least, it takes away memory from the current job so
that the incoming one can be bufferred up. If a job is terminated
with a control-D, the printer will echo that control-D back up to
the host when it has completely finished processing the current
job and is ready to accept the next one.
I've gotten a few unix machines around here to talk reliably with
LaserWriter+'s and NTX's. I wrote a program that did the following:
o Open the tty port and set the tty modes to handle Xon/Xoff flow
control, with no other control characters recognized (including
the ^D); set proper baudrate, 8-bits, no parity, single-character
I/O (cbreak for BSD, VMIN=1/VTIME=0 for SysV).
o Fork off a child that does nothing but read the tty port, putting
all output into a file. I just print the file as text after each
job; some PostScript programs generate messages that the user needs
to be notified about. It's also possible to examine these messages
looking for "Paper Out" and other such printer error messages. The
important thing is that the child does not exit until it sees a
control-D.
o The parent, in parallel with the child's processing, sends down
the PostScript file to the printer, following it with a control-D.
It also filters out any imbedded control-D's in the file. When
the file has been completely sent, it then waits on the child before
terminating and allowing the spooling system to start sending the
next job.
And that's essentially it.
robert
--
Robert Viduya robert at shangri-la.gatech.edu
Office of Computing Services
Georgia Institute of Technology (404) 894-6296
Atlanta, Georgia 30332-0275
[[ I hope we've heard the last of it, as well. You're right: this really
isn't the right list. For Usenet people, there is "comp.lang.postscript".
Unfortunately, the Internet mailing list "Info-Postscript" isn't running
anymore. --wnl ]]
More information about the Comp.sys.sun
mailing list