http://www.perlmonks.org?node_id=117479


in reply to Kludging the serial port

RD cannot be controlled in software. It is a receive only input into the serial shift register. RD does not normally have a range of only 0 to -5V, unless it is disfunctional. To be RS232C compliant, pins must be no greater than +/- 30V, and no less than +/- 3V. Many level converters will treat 0V as if it were a negative voltage, but that is not RS232C compliant, nor is it *any* guarantee that it will work from system to system.

Real RS232 drivers are tolerant of being shorted together indefinitely, and the recievers being driven at +30V or -30V indefinitely. Most decent ones have 15KV human-body-model ESD protection. Proper RS232 is capable of sourcing/sinking up to 10 milliamps per pin, so shorting a driver at +5V to a driver at -5V won't damage the system (nor will it do anything useful). Inputs typically have pullups or pulldowns to the voltage rails to hold them in their idle condition. This prevents an unplugged cable from looking like DTR, etc is still asserted. This is most likely why you see a negative voltage on the input.

I'd like to see the schematic for this interface, because what you describe makes no sense (not what you typed, but what the product is expecting).

--Chris

e-mail jcwren