Thanks, Hippy.
I did the debug bit on the VB side of things. It looks completely random, except that each time a receive error occurs, the first byte is right, but the next two aren't . Also, about 99% of the time the last byte is 255, but not always.
In the image, the multiline texboxes are ...