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
[46569] Re:Comport 통신에서 수신 데이터 처리를..
라스코니 [chouoo] 1235 읽음    2006-09-18 22:58
하나의 포트로 2개의 컴퓨터로부터 데이터를 받고 있다는 말씀인가요?

만약 그렇다면 그렇게 사용하는 것 자체가 올바르지 않습니다. 신호의 충돌로 전혀 엉뚱한 데이터가 들어올 수 있습니다.

방법은 하나의 포트당 한대의 컴퓨터를 연결하는 것 말고는 아마 없을 것 같네요.

김태진 님이 쓰신 글 :
: 안녕하세요
: 컴포트 모듈로 시리얼 통신을 하는데..
: 데이터 처리에 어려움이 있어서 질문 좀 올립니다..
:
: 데이터는 프로토콜 형식 없이..
:
: start, 100,200,300,400,500,600,700,800,900,1000,end \r\n
:
: start 와 10개의 콤마보 구분되는 숫자 데이터, end \r\n 으로 계속 받습니다.
:
: 그래서 아래와 같이 컴포트로 데이터를 수신했습니다.
: ----------------------------------------------------------------------
: void __fastcall TmainForm::ComPort1RxChar(TObject *Sender, int Count)
: {
:
:     AnsiString Str;
:     ComPort1->ReadStr(Str, Count);
:
:     ComPort1->ClearBuffer(true, true);
:     readStr += Str.c_str();  // 10초에 한번씩 데이터를 받음
:     Edit1->Text= readStr;
: }
: -------------------------------------------------------------------
: 그랬더니.. 데이터가 깨끗하게 오지가 않네요..
:
: 아.. 컴퓨터 2대로 부터 데이터를 받고 있어서 인지..
:
: start, 100,200,300,400,500,600,700,800,900,1000,end start, 100,200,300
: 하는 식으로 데이터가 뒤에더 딸려 오거나..
:
: 400,500,600,700,end 하는 식으로
: 앞에 데이터는 없구 뒤에 데이터만 오는 식으로 됩니다.
:
:
: 이걸 확실히 구분지어진 데이터로 받을순 없을까요?
: 이렇게 수신 받은 데이터를
: ---------------------------------------------------------------------------
: void __fastcall TMyReadThread::UpdateDisplayRead(void)
: {
:     mainForm->ProcessRx1();
: }
: __fastcall TMyReadThread::TMyReadThread(void) : TThread(TRUE)
: {
:     FreeOnTerminate = TRUE;   // 쓰레드가 끝났음을 나타냄
:     Resume();
: }
: void __fastcall TMyReadThread::Execute(void)
: {
:
:     while(!Terminated)
:     {
:         strcpy(mainForm->readData,mainForm->readStr.c_str());
:         Synchronize(UpdateDisplayRead);
:         mainForm->readStr="";
:         Sleep(500);
:     }
: }
: ---------------------------------------------------------------------------
:
: 쓰레드에서 처리하기때문에..
: 저렇게 겹쳐버리면.. 수신한 데이터를 처리하기가 애매하더라구요..
: 그냥 버리기도 그렇기때문입니다.
:
: 다른 방법이라도 좋으니까..
: 넘어 오는 데이터를 모두 처리할수 있는 방법 좀 알려주십시오.
:
: 그럼 좋은 하루 보내세요~^^

+ -

관련 글 리스트
46537 Comport 통신에서 수신 데이터 처리를.. 김태진 1144 2006/09/14
46569     Re:Comport 통신에서 수신 데이터 처리를.. 라스코니 1235 2006/09/18
46565     Re:Comport 통신에서 수신 데이터 처리를.. 우리 1217 2006/09/18
46582         Re:Re:Comport 통신에서 수신 데이터 처리를.. 김태진 932 2006/09/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.