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
[20261] [질문] 씨리얼 통신 질문입니다.
kabaliero [] 1111 읽음    2002-07-22 11:10
RS-232 통신을 하는데요..

질문이 몇가지 있어서 질문을 올립니다.

ReadFile을 Thread에 넣어서 돌리면 다운 없이 돌아가는데.. 버튼 이벤트로 빼서 실행해보면 멈춰버립니다.

포트에 Data가 있을때는 오류가 안나는데.. 데이터가 없으면 쓰레드와 버튼의 차이가 생깁니다.

포트 설정은 15msec동안 다음 데이터가 들어오지 않으면 Timeout을 발생시키도록 설정해놨습니다.

아래 포트 핸들 생성과 쓰레드 핸들 생성, 그리고 쓰레드 루틴을 올립니다.

쓰레드르 막고 시작!!! ~ 끝!!! 부분을 버튼으로 빼서 누르면.. 프로그램이 죽는 문제입니다.

정말 도와주시면 감사하겠습니다..

// --- 포트 핸들 얻기
hComPort = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

// --- 쓰레드 생성
hThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)ReadThread, NULL,0, &id);

// --- 쓰레드 루틴
DWORD ReadThread (LPDWORD lpdwParam1)
{
   unsigned char inbuff[BUFSIZ];
   DWORD nBytesRead;

   while (bReading)
   {
      if (!ReadFile(hCommPort, inbuff, BUFSIZ, &nBytesRead, NULL))  //  시작!!!!! -------
      {
    locProcessCommError(GetLastError ());   // 오류처리부분
      }
      else
      {
    if (nBytesRead)
         {
            Form1->ProcessBytes(inbuff, nBytesRead);   // packet 처리 부분
         }
      }                                                             // 끝!!!!! -----------
   }
   PurgeComm(hCommPort, PURGE_RXCLEAR|PURGE_TXCLEAR);
   return 0L;
}

+ -

관련 글 리스트
20261 [질문] 씨리얼 통신 질문입니다. kabaliero 1111 2002/07/22
20262     될수 잇으면 _beginthread 나 _beginthreadex 를 사용하세용 (냉무) 에보니.^ㅅ^ 1294 2002/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.