I am trying to interface with an Alicat Mass Flow Controller using an Arduino Mega Serial port. The mass flow controller serial port appears to send out TTL voltage levels (0-5V, I checked via my scope) so I just connected its serial pins to the Arduino serial port directly. I am able to read something from the MFC, however, the characters are garbled. I am able to read the data just fine via a PC serial port, however. I made sure that the Baud rates are matched between the devices. I tried to switch baud rates, but no luck.

So I think I figured out the problem. The MFC is communicating using RS232. However, when I measured the output voltage, it went from 0-5V, so I figured it was TTL. After I inverted the signal from the MFC, I could read the data with no problem. Now I still cannot send from the Arduino to the MFC, but that could be because the input must be a real RS232 signal, not the weird 0-5V signal it is outputting. Ordered some RS232 to TTL converters also... so we'll see.

Well they really did not describe the protocol well on the datasheet. However, thinks are working just peachy now. The trouble was that the Arduino uses TTL Serial, but the MFC, while it accepts TTL-level signals, uses the RS232 convention of low voltage = 1 and high voltage = 0. Simply inverting the signals both to and from the MFC solved all communication issues!