[comp.sys.hp] Help needed with rs422 programming

stevem@pserv.CFSMO.Honeywell.COM (Steve Mestad) (03/27/91)

OK folks, I have a problem and need help from the experts.  I have tried HP
and the official answer is "we can't help you".

I have a Dataproducts LZR2665 postscript printer which I want to connect
to an HP9000 370 via rs422.  This is the 98659 board used (and only supported)
for connecting 64700 series emulators.  I need to go a fairly long distance
and want the higher speed that rs422 provides so rs232 and Centronics are not
good options.

The problem is in getting the printer and the computer to speak nicely to each
other.  I have a routine that opens the line and shoots out data at 57600 baud.
When I echo the data to the console, things work ok.  When I get rid of that
echo, the printer doesn't do anything except send back an error message.  
Apparently a problem with data arriving too fast or some such.

Now for my questions on the rs422:  (which HP can't answer)
    Do I need to use special ioctl's or other special i/o programming for the
        rs422 board?  Or does it follow the normal ioctl conventions used on
        rs232?  The 98659.h include file has many strange definitions and I am
        curious if I need to use them somehow (and if so, how) or if those were
        only required for the device driver....??
    Does the device driver support xon/xoff flow control transparently?  Do I
        need to handle it myself (other than turning it on via the ioctl's)?
        The emulators are connected via hardware handshake.  Is hw handshake
        all that is supported?  Will xon/xoff get passed through or dropped?
        If its dropped, what else is not passed on?
    Cabling.  The printer only has the xmit and rec data pairs.  No other 
        handshake signals are available.  I built my cable by passing those
        lines to the printer and looping the rest back like the test hood
        loopbacks.  This seems to work.  However, the timing line worries me
        a bit.  Will the card keep straight 57600 baud rates or must the
        timing line actually run to the peripheral to get accurate baud rates?
        Must any of the other signals actually interact with the peripheral?

My other questions are kind of postscript related.
    The printer doesn't seem to have a way of telling the computer that it is
        offline, out of paper, etc.  Although the rs232 port has some hw
        handshake signals, none of them are ever toggled to indicate status.
        All are strapped high or low permanently.  Is this how all postscript
        printers work?  Must I interrogate the printer via postscript to see 
        if its ready?  What about when it runs out of paper or goes offline 
        during a print job?  On this printer that seems to bring sudden death
        to the print job.
    Do postscript printers flow control via xon/xoff to prevent buffer overrun?
        I think I have this one set to do so but I haven't been able to tell if
        it is actually trying to do so.  I had a protocol analyzer connected but
        it wasn't able to catch data going back to the computer for some reason.
        (Data does go back though as I am able to read out those error 
        messages.)  Are buffer full conditions also a postscript status query
        situation?

I suppose this is a bit much to ask, but I will anyway.  The section of code
from the emul700 program that sets up the rs422 port for emulation would
have all the programming info I am after.  Is there any way I can get a copy 
of the code that sets up the port?  If the reads and writes are non standard, 
it would also be helpful to see an example of each as well.  Any examples of 
working code would be tremendously helpful but the emul700 program is the only 
one that comes to mind.  Confidentiality is promised, nondisclosures could be
arranged.

I really do wish to make this work and I still think it can be done.  Somehow.
I really don't want to use rs232 at 9600 baud.  Thanks for any info.  
Steve Mestad