I think my issue might shed light on this one, as it seems I have similar problems and have been trying to implement something along the lines of @westfw's response:
I am trying to read the serial communication from a pulse oximeter monitor (manual) on my Arduino Serial monitor.
SUCCESSFUL COMMUNICATION:
Using a cheap Amazon DB-9 to USB cable connected to a laptop and using RealTerm Serial Capture software.
Settings: 9600 b/s, Data Bits: 8 bits, Parity Bit: none, Stop Bits: 1, Flow Control: RTS/CTS handshake
I am able to see a successful stream of bytes (each frame is 6 bytes long, starting with 180 and ending with 255, with my desired data to be parsed in between).

I want the stream of bytes seen in the terminal to be read by the Arduino (instead of software on my laptop)!
UNSUCCESSFUL WITH ARDUINO:
Failure 1: RS-232 Arduino UNO shield (LinkSprite)
Failure 2: RS-232 to TTL module (Amazon)
Failure 3: DB-9 to USB cable on Arduino (Amazon)
In each case, we were able to see a stream of 255 values showing up in the Serial monitor (whether plugged in or not!) Even using a logic analyzer on the tx and rx pins showed nothing.
However, we did see a 6.5V difference on the RTS to CTS pins of the DB-9 port. We tried connecting them together with a wire, but still didn't see a difference in the data stream.
None of these options we tried so far had any flow control options available to the Arduino (TTL logic), so now I'm looking at this module which does.
However, I'm still not sure whether to be pursuing an electrical solution (wiring up RTS & CTS somehow or DTR?) or an Arduino Software solution to control the handshake.