Hi,
Like I said earlier, with this aproach you're going to get variation in the bit to bit timing when going from preamble to data to postamble etc. You should be able to SEE this on the scope. Also verify that you actually GET 536.4us between bits (I think it'll be a bit more due to the FOR-NEXT loop) and adjust the delay to match exactly.

What I'd try, just to see IF timing is all there is to it is to stitch a complete packet together and send it in one go. Just extend the size of the array and load it up with bits, set BitsToSend accordingly and call SendBits.

/Henrik.