Before I begin working on this new project, I'm trying to avoid any problems so a little help may be in order. The device I'm going to be communicating with is an rs232 based system but does not generate a negative voltage, but rather 0volts represents the logic high. If I use a max232 will 0v shop up as high for the arduino? As far as I know this would likely end up in the unknown zone and could be either 0 or 1. If this won't work then any ideas on how to go about reading this signal?
Any help would be appreciated. I don't have a lot of access to this particular device, so I'm trying to work out these issues before I get into it.
The official RS-232 uses -3 to -15 and +3 to +15, and the signal is actually inverted.
So you have indeed a problem with 0V.
Sometimes between microcontrollers, a 0V and 5V digital signal is used for serial communication. This is often called 'UART' serial communincation. Sometimes that signal is inverted and sometimes not.
You have a signal that can be 0V, but what is the other level ?
Do you want to read that signal, or do you also have to write something ?
What device is it ? you can copy an url into the text.
Do you know if that signal is inverted ?
I just did some testing with my max232 shield, and when I supply 5v it converts that to zero as expected, and then when 0volt is supplied it always maintains 5volt without fail. I guess I'll just do some heavy testing to make sure this will continue to work.
If you have a signal that is 0V (logic high) and 5V (logic low), you don't have the voltage levels of a RS-232, but you have voltage levels of a serial UART microcontroller. To be more precise, you have an inverted signal.
You can use a gate or a transistor to invert it, or only a protection resistor to the Arduino. The SoftwareSerial library has an undocumented feature to handle an inverted signal.
I would prefer a transistor, since that also adds extra protection for the Arduino.