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
[46435] Re:(질문)시리얼통신에서 쓰레드사용하기
ComPort [] 2082 읽음    2006-09-04 13:33
RxChar 이벤트를 사용해 보세요...
수신버퍼에 전송되면 무조건 실행됩니다....

void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{
     char temp[500];
     memset(temp, 0x00, sizeof(temp));

     ComPort1->Read(temp, Count);
}


이한진 님이 쓰신 글 :
: 제가 마이컴을 주로 사용하기 때문에 마이컴 보드 테스트용 프로그램을 작성하기위치
: 요즘 빌더를 배우고 있습니다.
: 그런데, 통신관련 프로그램을 하는 중에 잘 되지 않아 이렇게 질문을 올립니다.
:
: 통신 데이타를 보내는 것은 Main Form에서 버튼을 누르면 데이타를 보내게 했기에
: 송신은 별 문제없이 되는데 수신이 문제입니다.
:
: 수신의 경우 하이퍼터미널이나 여타 통신 프로그램처럼 계속 수신을 받으려고 합니다.
: 수신된 내용을 Memo창에 표시를 하구요
: 그런데, 쓰레드에서 데이타가 수신되면 수신된 데이타를 읽어 표시하려고
: "WaitCommEvent"을 이용하여 데이타가 수신될때만 Open 명령을 실행하려 했더니
: 프로그램 실행도중 "WaitCommEvent "에서 멈추더군요..
: 그래서 그런지 프로그램이 "WaitCommEvent"에 멈추어 있는동안은
: 송신도 이루어지지 않고, 어느 데이타가 수신되어야만 송신도 가능하더라구요
:
: 어떻게 해결 해야 할지 모르겟네요..
: 데이타의 수신을 항시 확인하면서 송신이나 다른 작업을 할수 잇는 방법은 없을까요..
: 쓰레드에서 수신되 데이타를 읽어와서 확인하는 방법말고
: 이벤트나 인터럽트같은 것을 사용하는 방법은 없는것인가요?
:
: 보통 마이컴의 경우 데이타가 수신되면 인터럽트가 발생하여 메인 프로그램과는 별도록
: 제어할 수 있잖아요..그렇게 하고 싶습니다..
: 많은 고수님들의 답변 부탁드립니다.
:
: *------ apicom.cpp 내용----
: /* 통신 Port로 부터 Signal이 들어오는지를 감시 한다.                       */
: bool WaitRxEvent(int Port)
: {
:     DWORD dwEvtMask = 0;
:     ::WaitCommEvent(m_hCommPort[Port], &dwEvtMask, NULL);
:     if ( (dwEvtMask & EV_RXCHAR) == EV_RXCHAR )
:         return true;
:     else
:         return false;
: }
: *------ rs232Thred.cpp 내용 ----
: void __fastcall RS232Thread::Execute()
: {
:     char inbuff;
:
:     // 테이타 수신 확인
:     while( WaitRxEvent(th_Port) )
:     {
:     //데이타가 수신되면 다음 명령을 실행한다.
:         // serial data Read
:         bool kk = COM_Read(th_Port, &inbuff, 1);
:         if( kk )
:         {
:             MainForm->Memo2->Text = inbuff;
:         }
:         Sleep(1);           
:     }               
: }

+ -

관련 글 리스트
46432 (질문)시리얼통신에서 쓰레드사용하기 이한진 1555 2006/09/04
46435     Re:(질문)시리얼통신에서 쓰레드사용하기 ComPort 2082 2006/09/04
46433     Re:(질문)시리얼통신에서 쓰레드사용하기 이돈진 1272 2006/09/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.