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
[49054] Re:시리얼 통신으로 일정한 간격으로 들어오는 값 받기
금목암 [iconms1] 1667 읽음    2007-04-25 09:56
대마두 님이 쓰신 글 :
: 안녕하세요 빌더 맨날 초보 대마두라고 합니다
:
: 지금 테스트 하는 프로그램은 어떤 엠프에서 값이 0.2초에 한번씩 시리얼 232c로 엠프에 나오는 값이 출력되고
:
: 현재 출력되고 있는 값을 Timer로 같은 0.2초 간격으로 PC에서 받는 프로그램을 작성하는데요.
:
: 이상한 기호만 나오고 값이 제대로 안나오네요.
:
: 하이퍼 터미널로는 잘 나오는 값이 왜 안나올까요?
:
: 허접한 수신부입니다....
:
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:   char buf[1000];
:   unsigned long length;
:   ReadFile(hComm, buf, 1000, &length, NULL); //시리얼로 들어오는 부분을 받는 곳이구요
:   Label1->Caption = s(buf);
:   FILE *fp = fopen("RS.txt", "at");
:   fputs((s(Now().CurrentDateTime())+"("+s(length)+") : **"+s(buf)+"**\n").c_str(), fp); // 현재 받은 시리얼 값을  RS.TXT에 저장하는 파일입니다.
:   for ( int i=0; i<length; i++ ) fputs((IntToHex((int)buf[i], 2) + " ").c_str(), fp);
:   fputs("\n\n", fp);
:   fclose(fp);
:   PurgeComm(hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
: }
:
: 허접한 코드 질문입니다만.. 아시는 분들 좀 알려주세요 ^^;;;;
[답변]
통신을 타이머로 받지마시고 ㅋ자료실의 콤포넌트로 인터럽트로 받으세요
그리고 통신버퍼를 쓸데없이 1000 바이트씩 읽지말고 버퍼에 들어온 내용만큼 읽어야 합니다
그리고 통신포트 설정과 오픈부분은 어디에 있나요?

+ -

관련 글 리스트
49029 시리얼 통신으로 일정한 간격으로 들어오는 값 받기 대마두 1248 2007/04/23
49054     Re:시리얼 통신으로 일정한 간격으로 들어오는 값 받기 금목암 1667 2007/04/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.