포럼 사이트에서 여러모로 도움 많이 받으며 임베디드 공부하고 있는 학생입니다.

이번에 블루투스를 이용해서 시리얼 통신 파일 전송 프로그램을 만들고 있는데요.

하던 중 개념적으로 궁금한 것이 생겨서 이렇게 글남기게 되었습니다.



read() 함수가 호출된 상태에서 블록되어서 수신을 기다리고 있던 쪽에서

어떤 값이 들어와서 그 값을 검사하는 루틴이 실행 중에 있습니다.

하지만 이때 또다시 보내는 쪽에서 값을 보내게 되어 수신하는 쪽에서는 read() 함수가 호출된

상태가 아닌 어떤 다른 작업을 처리하고 있을 경우일때 그 전송해온 값들은 어떻게 되는지 궁금합니다.

TCP/IP 통신에서는 버퍼가 내부적으로 구현되어서 괜찮은 걸로 알고 있는데

시리얼 통신에서는 어떻게 처리해줘야 하는지 궁금합니다 +_+

뭐 멀티 스레드 개념으로 보면 쉽게 처리될 것 같긴 하지만 +_+ 개념적인게 궁금해서요.



또 궁금한 것이 있는데요.

stx 코드 값은 0x02,  etx 코드 값은 0x03 은 표준으로 정해진 값인가요?

사이트에 시리얼 테스트 프로그램 가지고 값 주고 받고 있는데 stx 값을 포함해서 보내게 되면

받은 쪽에서 stx 값을 제외한 값을 읽어 드리던데요. stx 없이 그냥 data 값만 보낼때

0x02 값을 삽입해서 보내면 stx 로 보질 않고 그냥 데이터로 보던데 ;;  내부적으로 어떻게 구현 되었길래

0x02 를 그냥 써서 보내면 검사 안하고, 프로그램 내에서 stx 선택해서 보내면 되는지 궁금합니다...


길글 읽어 주셔서 감사합니다. 답변 기다리겠습니다~