"выдаст ошибку CRC" - что имеется в виду? Неверный расчет CRC или Runtime error ?
1. Вообще, структура Main_Buffer какая, и для чего нужен W_W.reciv_byte?
2. Первые два байта (Main_Buffer[0] и Main_Buffer[1]) - заголовок, а в третьем (Main_Buffer[2]) хранится длина всего фрейма, включая заголовок и себя самого?
3. Заголовок и поле длины фрейма (то есть три первых байта) тоже участвуют в расчете CRC?
4. Значение в третьем байте (длина фрейма) включает в себя байты с CRC, который пришел в хвосте буфера (из которого ты TMP делаешь) или нет? А то у тебя половина TMP входит (Main_Buffer[sizeData-1]), а половина за пределами (Main_Buffer[sizeData]), по-ходу здесь проблема, в старшем байте.