Arduino + LS7407N to shift logic levels in serial communication

arduinobufferopen-collectorserial

I'm trying to drive a device that uses 12-0V levels for serial communication. I decided to use LS7407N, a buffer with open-collector, so that I can use Arduino's TTL levels to send commands to the device. The problem is that the device doesn't seem to get any messages. I am almost certain that the circuit is connected properly. As for the software, I'm only using Tx line to transfer the command and print out the result from the device. I do not have an oscilloscope, so I can't really see how the LS7407 chip works, but I tried several I bought yesterday and still get nothing.

Here is the circuit:

Maybe there's something wrong with the design? Any help would be much appreciated.

Best Answer

Turns out it wasn't a design flaw.

tl;dr: Devices parity was set to EVEN.

Because of that, the messages from Arduino (with parity set to NONE) were coming in distorted. In case of loss of data the device simply doesn't provide any feedback.

My biggest mistake was assuming that the device parity was set to NONE. This conclusion came to me when I was receiving test device's messages with Arduino, and then simply displaying them. I'm not sure why, but they have appeared correctly using NONE. And also using EVEN. Yet the device doesn't work when Arduino is trying to send something using NONE. I changed it to EVEN and the communication works like a charm.