エスパーすると、do〜whileのところは

data[0] = receive();
data[1] = receive();

にするのが正しいんじゃないかと思う