Microcontroller hanging during serial communication
Long'ish serial wiring may incidentally suffer from bit errors. How about adding a checksum to every message (data frame) you send, so the receiving end can check that checksum and if it is wrong discard the whole data frame, probably asking for a retransmit.

A simple checksum mechanism can be achieved by EOR'ing all bytes in the frame and sending the resulting byte as checksum. The receiving end should be able to calculate the same checksum.