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
[17201] Re:윈도우 2000 에서 시리얼 통신이 안됩니다.......
김동욱 [] 1281 읽음    2002-04-04 11:02
저는 윈2000서버에서 태스트했는데 PortReset함수부분외에는 별다른 차이가 없네요.

속시원한 답변이 되지를 못했네요...참고하세요.

조병훈 님이 쓰신 글 :
: 도와주세요~~~
: 아래 코드는 제가 제작한 여러 단말기들 제어 및 테스트 프로그램에 넣어 쓰던 시리얼 통신관련
: 코드입니다. 한데 아래 코드를 이용해서 WIN98에서는 지금껏 아무이상없이 잘 동작하던것이
: WIN2000 에서는 컴 포트가 전혀 열리질 않는군요. 어디가 잘못되었는지 WIN2000과 어떤 점에서
: 어긋난는지 자세한 설명 부탁 드립니다. 여러 문서들 참조를 해봤는데 잘 해결이 안되네요
:
:
:
: bool PortOpen(char nPort,char nBaud,char nDataBit,char nStopBit,char nParityBit)
: {
:     DCB    dcb;
:     char szPort[10];
:     HANDLE hThread;
:     PortClose();
:
:     sprintf(szPort, "COM%d", nPort);
:
:     hComm = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE,0,NULL,    OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL |  FILE_FLAG_OVERLAPPED,NULL );
:     if(hComm == INVALID_HANDLE_VALUE) return false;
:
:     if(!GetCommState(hComm, &dcb))
:     {
:         CloseHandle(hComm);
:         return false;
:     }else
:     {
:         old_dcb = dcb;
:     }
:
:     FillMemory(&dcb, sizeof(dcb), 0);
:     dcb.DCBlength = sizeof(dcb);
:
:     switch(nBaud)
:     {
:         case B2400: dcb.BaudRate = CBR_2400;  break;
:         case B4800: dcb.BaudRate = CBR_4800;  break;
:         case B9600: dcb.BaudRate = CBR_9600;  break;
:         case B19200:dcb.BaudRate = CBR_19200; break;
:     }
: //ShowMessage(dcb.BaudRate);
:     switch(nDataBit)
:     {
:         case DATA_B7: dcb.ByteSize = 7; break;
:         case DATA_B8: dcb.ByteSize = 8; break;
:     }
: //ShowMessage(dcb.ByteSize);
: //    dcb.Parity   = NOPARITY;
:
:     switch(nStopBit)
:     {
:         case STOP_B1: dcb.StopBits = 0; break;
:         case STOP_B2: dcb.StopBits = 2; break;
:     }
: //ShowMessage(dcb.StopBits);
:
:     switch(nParityBit)
:     {
:         case ODD_P:  dcb.Parity   = 1;break;//PARITY_ODD; break;
:         case EVEN_P: dcb.Parity   = 2;break;//PARITY_EVEN; break;
:         case NONE_P: dcb.Parity   = 0;break;//PARITY_NONE; break;
:     }
:
:     if(!SetCommState(hComm, &dcb))
:     {
:          CloseHandle(hComm);
:          return false;
:     }
:
:     PurgeComm(hComm, PURGE_FLAGS);
:     SetupComm(hComm, RXSIZE, TXSIZE);
: /*
:     Reading=1;
:     if((CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CommReadThread,NULL,0,&id))
:                  ==INVALID_HANDLE_VALUE)
:     {
:        ShowMessage(" ERROR Creating COMM_READ thread");
:        return false;
:     }
: */
:     PortReset();
:
:     return true;
:
: }
: //---------------------------------------------------------------------------
: void PortClose(void)
: {
:     Reading=0;
:     SetCommState(hComm, &old_dcb);
:     PurgeComm(hComm, PURGE_FLAGS);
:     CloseHandle(hComm);
:     CloseHandle(hThread);
: //    CloseHandle(AnalForm->haThread);
: }
: //---------------------------------------------------------------------------
: void PortReset(void)
: {
:      EscapeCommFunction(hComm, CLRRTS);
:      EscapeCommFunction(hComm, CLRDTR);
: //    Delay(100);
:      EscapeCommFunction(hComm, SETRTS);
:      EscapeCommFunction(hComm, SETDTR);
: //    Delay(500);
: }

+ -

관련 글 리스트
17199 윈도우 2000 에서 시리얼 통신이 안됩니다....... 조병훈 1445 2002/04/04
17201     Re:윈도우 2000 에서 시리얼 통신이 안됩니다....... 김동욱 1281 2002/04/04
17209         Re:Re: 도와 주세용`~~~~~~~ 조병훈 1174 2002/04/04
17246             Re:Re:Re: 도와 주세용`~~~~~~~ 김동욱 1193 2002/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.