lcBuffer = SPACE(bytestotal) This.Object.GetData(@lcBuffer, , bytestotal) *--Only process when the last received character is EOT. *IF AT(CHR(13), lcBuffer) = 0 &&--This won't work quite right. IF RIGHT(lcBuffer,1) <> CHR(13) .pcLastReading = .pcLastReading + lcBuffer ELSE lcMsgStr = .pcLastReading + lcBuffer .pcLastReading = '' *lnMsgs = OCCURS(CHR(13), lcBuffer) lnMsgs = OCCURS(CHR(13), lcMsgStr) FOR i = 1 TO lnMsgs lnAtEot = AT(CHR(13), lcMsgStr) lcThisMsg = LEFT(lcMsgStr, lnAtEot - 1) lcMsgStr = SUBSTR(lcMsgStr, lnAtEot + LEN(CHR(13))) .mOnComm(This.Object, lcThisMsg) NEXT i ENDIF