데이터의 처음과 끝을 확인 할 수 있는지를 확인 해 보셔야 하구요.
질문하신 예를 보면 바이너리 형태로 통신하고 있는데,
이럴 경우에는aroooong님 말씀처럼 데이터 길이가 고정되어 있거나,
데이터 선두에 데이터 길이를 포함하는 형태를 취하게 됩니다.
어떤 방법이든 정해진 데이터 길이만큼 수신 대기하고, 타임아웃이 발행하게 되면
재시도하도록 해야겠죠.
통신대상이 되는 장치의 문서를 보게되면 응답 대기 시간이 명시된 경우도 있으니,
그걸 참고 하시면 되겠고요.
통신속도 9600bps 기준 대략 한 바이트 수신에 약 1ms 정도 걸리니,
(실제 시리얼 통신에서는 한 바이트 전송하는데 10비트입니다. stop bit = 1, data bit =8, parity = none 일때)
수신하고자 하는 데이터 길이 + 여유시간으로 하시면 될 것으로 생각됩니다.
예를 들어 수신하고자 하는 데이터 10바이트 일 경우 실제 데이터 전송시간(10 x 1ms) + 장치측 지연시간 (200ms)을 고려하여 대략 300ms 시간 이상 타임아웃을 설정합니다.