|
음...
TCP/IP 통신인경우에 일정 Size이하인 경우
송신한쪽에서 송신한 만큼 한번에 들어오기도 합니다만..
RS232 - Serial통신인경우
송신한 쪽에서 보낸만큼 수신한쪽에서 일정하게 들어오지 않습니다.
송신측에서 다음과 같이 10Byte씩 3번 보냈을경우에
[10Byte] + [10Byte] + [10Byte]
수신측에서는...
[5Byte]+[3Byte]+[7Byte]+[2Byte]+[....]
위와같이 전혀 붙어서 오지 않습니다.
(문론 가끔 송신한 만큼 딱 맡게 들어올수도 있겠죠)
그러니 위와같이 뚝뚝 끝어져 올것을 감안해서 코딩해야 합니다.
STX , ETX를 Unique한걸로 보내던가?
아니면 Packet Length를 고정시키던가?
아니면..Packet - Header에 Length를 명기하던가...
그럼..
Kenzuro 님이 쓰신 글 :
: 안녕하세요.. 초보가 궁금한게 있어서 질문 올립니다~ 많은 관심좀 부탁드립니다.
:
: 궁금한 것은요..
:
: 제가 장비에서 시리얼 통신으로 정보를 받는데요.. 정보가 5개씩 한 세트로 50세트가 들어오도록
:
: 되어있습니다. D라는 정보가 처음 시작이라면 D가 맨 앞에 와줘야 하는데.. 어쩔 때는 정보가 제대로
:
: 들어오다가도 처음 시작정보인 D가 중간에 껴 있는 경우도 있습니다. 값이 이상하게 들어오나 싶어서
:
: 들어오는 정보를 파일로 출력해보니 정보는 제대로 들어옵니다.. 이것저것 생각해본 결과
:
: 버퍼에서 출력되지 않고 남아있던 정보가 한번에 출력되면서 그런거 같은데요.. 이 버퍼를 초기화 해 줄 방법
:
: 이 있을까요? 검색을 해봤는데.. 검색도 코딩도 초보라 그런지 잘 못찾겠더라구요.. 잘 부탁드립니다!!
:
: 컴포트는 TComPort를 사용했습니다.
|