Are your saying that timeout will not work if the expected character string OR any signal is received whithin the timeout value? I'm confused.
Yes, that is why TIMEOUT does not work with RF serial comms either. There is always noise that will appear to be a signal.
Here is a snippet from a GPS app of mine if it helps.
Code:
SERIN2 PORTB.2,16572,[WAIT("$GPGGA"),WAIT(","),DEC2 H,DEC2 M,DEC2 S,_
        WAIT(","),DEC2 ND,DEC2 NM,WAIT("."),DEC3 NMD,WAIT(",N,"),_
        DEC3 WD,DEC2 WM,WAIT("."),DEC3 WMD]