C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68851] Re:시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요?
망치 [mangchy] 2034 읽음    2012-12-20 17:39
데이터를 수신하는데 있어 쓰레드는 별개의 문제인거 같군요.

문의하신 소스만 보았을때는 문제가 있는거 같습니다.
Count가 리턴되는데 sscanf에서는 무조건 0~5까지 배열값을 뿌리게 되어있군요.
실질적으로 6바이트가 안들어올수 있는데요.

만일 Count=2값이 되었을때 0,1 배열값을 뺀 나머지는 쓰레기값으로 뿌려지겠군요...

이 시점에서 쓰레드를 쓸것인가를 고민하게 되는데
만약 6바이트만 들어온다고 보았을때 이 6바이트가 최대 타임아웃이 얼마냐에 따라
쓰레드 사용 결정을 할수 있겠네요. 왜냐하면 그 시간동안 데이터가 들어오는거 확인하는동안 다른걸 못하기 때문인거죠.

타임아웃이 만약 1초로 되어있다면 1초동안 계속적으로 Read하고 6개가 다 받아졌을때 그 루틴을 빠져나오면 되겠네요...

정확하게 사용하는 프로토콜등을 모르니 여기까지....

프로바라기 님이 쓰신 글 :
: rs232방식으로 보드와 통신을 하는중인데요...
: 일반 다운로드한 프로그램들은 데이터를 잘만 받는데
: 제가 만든 프로그램에서는 데이터가 앞부분만 들어온다던지 하는 등의
: 정상적인 데이터를 받을 수 가 없네요..
:
: DebugPortRxChar(TObject *Sender, int Count) 함수내에서
:
: DebugPort->Read((void *)&rcv[0], Count);으로 데이터를 받고
: sscanf(&rcv[0],"%f%f%f%f%f%f",&data[0],&data[1],&data[2],&data[3],&data[4],&data[5]);
: 으로 데이터를 변환 추출하고 있는데 쓰레기 값도 많이 들어오고 놓치는 데이터도 많고요
: 조언좀 부탁드립니다.

+ -

관련 글 리스트
68850 시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요? 프로바라기 1718 2012/12/20
68872     Re:시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요? 프로그램초짜 2094 2012/12/24
68851     Re:시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요? 망치 2034 2012/12/20
68858         Re:Re:시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요? 프로바라기 2032 2012/12/21
68859             Re:Re:Re:시리얼통신을 하기위해서는 꼭 쓰레드를 써야 하는 건가요? 망치 2034 2012/12/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.