The only problem is I have no Idea what to do with this now.
Yeah I don't think this will help. Basically we were confused about the following: Typically, the serial protocol works as follows: The line is HIGH by default. When the transmitter is sending a byte, it first pulls the line LOW for one time unit. Then during the subsequent 8 time units, it transmits each bit, setting the line to either HIGH or LOW depending on the bit value. Lastly, the line is HIGH for another time unit. This is the stop bit and you can set up your hardware to require several stop bits or none.
In any case, it was not clear whether by inverting, you wanted to send LOW for a 1-bit and HIGH for a 0-bit, i.e. just invert the data byte, or whether you need to invert the whole thing, i.e. also have the line LOW by default, a HIGH start bit and a LOW stop bit.
Looking at the code of SoftwareSerial, the magic parameter seems to invert everything, not just the byte. I am not sure whether INVDATA inverts the byte or the whole pin logic level, but I'm tending towards the former which is not what you want.
Not sure where you think I should use the '~' operator?
The ~ operator just inverts the byte. So you could invert your byte pattern, but not the logic level of the stop bit etc.
It is a Label printer TSC is the Brand and the model is TTP-245C
The weird thing is, looking at the manual this is to be connected to a PC without any quirks. Hence I don't understand how this can possibly work when the whole logic levels are inverted.
I purchased a sparkfun RS-232 level converter and that didn't work.
https://www.sparkfun.com/products/449
Can you give us a little bit more details? Like some diagram and/or picture of how you wired the stuff together, whether you have anything connected between the arduino (the one that works) and the printer etc.? Also "it didn't work is a bit difficult to work with". I guess the printer just did not print? The reasons causing this could range from a pin mis-match to the grounds not being tied together properly. Can you tell us what kind of equipment you have to debug the problem? Worst case I'd suggest to configure one arduino as receiver with the same parameters as your printer (if you print the self-test slip, everything should be on there) and try to successfully transmit from the other one. Also make sure to meet the voltage level requirements of the printer.
Regards
Matt