LS2208 barcode scanner to freeduino

I am trying to connect a Symbol LS2208 barcode scanner, in RS232 mode, to my freeduino, directly from the 10-pin connector on the scanner. According to Motorola (Symbol) documentation the scanner uses TTL level signals "which interface with most system architectures". So, I thought I could just connect power and ground and then the TxD signal off the scanner to the Rx0 pin of the freeduino (Arduino pin 0). So far I have not been successful.
I finally wrote a program that monitors Arduino pin 0, to see if I could get an idea of what kind of data I was getting. I have a 32-character LCD display, so I monitor the line and when the line changes, I take 32 samples at regular intervals of roughly (1000000/(baudrate*3)) microseconds. I display 1 when the line is high and 0 when it is low.
I scanned 3 single-character barcodes, and I expected to see some relation on my display to a start bit, 8 ASCII bits, and a stop bit. Here are my results:
'U' (ascii 0x55): 11100011100011100111000111000000
'7' (ascii 0x37): 11100000000011100000111111000000
'0' (ascii 0x30): 11111111111111110000011111100000

The result for 'U' makes sense to me, because 0x55 is 01010101. '7' seems a little bit off, but I can make myself believe that it follows the same scheme. I would expect '0' to start out the same way '7' does, and this does not happen at all.
Does anyone know what kind of encoding is used on the LS2208?

I think I figured out what's going on. The signals are simply inverted. I didn't realize that, in RS-232, for each byte, the least significant bit is sent first and the most significant bit is sent last. I'll try to post something sensible when I get this project working.

I modified SoftwareSerial to use an inverted signal, and I am now successfully reading barcodes. It's not very hard, though, to confuse the program by scanning items quickly. I think I'm going to try modifying SoftwareSerial to use Timer1, which is interrupt driven. Then, I can process data between bits.