If your PIC have an internal USART... use it. Use the USART interrupt to get your data, then send it where you want.

No timeout hassle and all this kind of future problem. Do a search with USART Inerrupt and you should find more than enough to begin

Receive your data, one byte at the time, then you can store them in an aray, EEPROM, send it to LCD.........