Do a search on manchester encoding and use it.
The transmitter/receiver use a sort of zero-crossing detector (at least I think that's what it's called). You can't just put serial into the transmitter and expect to get the same signal out.
Basically, you convert all of your 0's into '01' and all of your 1's into '10', both at the transmitter end and the receiver end.
Example:
You want to send a $73 (hex 73):
$73 = % 0111 0011
manchester encoded becomes: 01 10 10 10 01 01 10 10

decoded at the other end in reverse:
receive:
01 10 10 10 = $6A
01 01 10 10 = $5a
convert:
01 = 0, 10 = 1, 10 = 1, 10 = 1; -> 0111 = $7 (upper half)
01 = 0, 01 = 0, 10 = 1, 10 = 1; -> 0011 = $3 (lower half)

put it back together to get $73.

Yes, you do 'waste' half the bandwidth (ie. transmitting at 2400 baud only gives you 1200 effective baud).
But you also have to 'train' the receiver to be able to recognize the halfway point between 0 and 1. You do this by sending about 5 ms (maybe more, maybe less) worth of $55 or $aa, whichever, it ends up the same in the end.

Then you can start sending your data.

I've got those same modules from Rentron. They work great, even in a sloppy solderless breadboard environment. I routinely can get a couple hundred feet of range from them at 9600baud (even though they aren't rated for that speed).

Also, for a software idea for you, I split the bytes in half and used a 'look up' table to encode the sending data. To receive the data, I used the same 'look up' table to decode the data and then reassembled the bytes as required.

A bit inefficient, but it's quick and simple and it works for me...
JDG