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
[23102] Re:Re:시리얼과 WIN2000
김용수 [] 822 읽음    2002-12-09 13:20
감사합니다. 한번 해보겠습니다.
심호용 님이 쓰신 글 :
: Timeout 시간을 조정해 보세요.
: 저도 그문제 때문에 한참 고생을 했거든요.
: 아마 Timeout 문제가 맞을거 같네요.
: 그럼 .
:
: 김용수 님이 쓰신 글 :
: : 안녕하세요. 고수님들의 충고 부탁드립니다.
: : 아래 소스와 같이 시리얼 통신 프로그램을 작성하여
: : DSP와 통신하는 프로그램입니다.그런데
: : win98에서는 아주 잘되었는데요, 문제는 win2000에서
: : 해보니 프로그램에서 전송은 잘되는데 프로그램으로 받지를 못하고 있습니다.
: : ReadFile 부분이 문제인가요?
: :
: :
: : //-------------------------------- main.cpp
: :
: : hComm = CreateFile(COMPort.c_str(),
: :                       GENERIC_READ | GENERIC_WRITE,
: :                       0,
: :                       NULL,
: :                       OPEN_EXISTING,
: :                       FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
: :                       NULL );
: :
: :     // IF THE PORT CANNOT BE OPENED, BAIL OUT.
: :
: :     if(hComm == INVALID_HANDLE_VALUE)
: :     {
: :        ShowMessage("COM Port Open Error, Exit!");
: :        Application->Terminate();
: :     }
: :     else
: :     {
: :        ComOpenSuccess=10;
: :        COMmLED->Color=lcGreen;
: :        Com_Ok_Message=COMPort+" Port successfully Opened...";
: :        MainForm->StatusBarMain->Panels->Items[0]->Text=Com_Ok_Message;
: :     }
: :
: :    // SET THE COMM TIMEOUTS IN OUR EXAMPLE.
: :
: :     GetCommTimeouts(hComm,&ctmoOld);
: :     /*ctmoNew.ReadTotalTimeoutConstant = 100;
: :     ctmoNew.ReadTotalTimeoutMultiplier = 0;
: :     ctmoNew.WriteTotalTimeoutMultiplier = 0;
: :     ctmoNew.WriteTotalTimeoutConstant = 0;*/
: :     ctmoNew.ReadIntervalTimeout = MAXDWORD;
: :     ctmoNew.ReadTotalTimeoutConstant = MAXDWORD;
: :     ctmoNew.ReadTotalTimeoutMultiplier = MAXDWORD;
: :     ctmoNew.WriteTotalTimeoutMultiplier = MAXDWORD;
: :     ctmoNew.WriteTotalTimeoutConstant = MAXDWORD;
: :     SetCommTimeouts(hComm, &ctmoNew);
: :
: :     // SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.
: :     // THERE ARE OTHER WAYS OF DOING SETTING THESE BUT THIS IS THE EASIEST.
: :     // IF YOU WANT TO LATER ADD CODE FOR OTHER BAUD RATES, REMEMBER
: :     // THAT THE ARGUMENT FOR BuildCommDCB MUST BE A POINTER TO A STRING.
: :     // ALSO NOTE THAT BuildCommDCB() DEFAULTS TO NO HANDSHAKING.
: :
: :     dcbCommPort.DCBlength = sizeof(DCB);
: :     GetCommState(hComm, &dcbCommPort);
: :     AnsiString BuildComDCBSTRING=IntToStr(COMBps)+","+COMParity+","
: :                               +IntToStr(COMBit)+","+IntToStr(COMSTOPBit);
: :            ; // "9600,N,8,1"
: :     BuildCommDCB(BuildComDCBSTRING.c_str(), &dcbCommPort);
: :     SetCommState(hComm, &dcbCommPort);
: :
: :     // ACTIVATE THE THREAD. THE FALSE ARGUMENT SIMPLY MEANS IT HITS THE
: :     // GROUND RUNNING RATHER THAN SUSPENDED.
: :     ReadThread = new TRead(false);
: :
: :
: : //(2)-------------------------------- readthread.cpp의 thread에서
: :
: :  while(!Terminated)
: :   {
: :     
: :          // 데이터를 쓰는 경우의 조건식은 생략합니다
: :          TransmitCommChar(hComm,'K');
: :
: :          // 데이터를 읽는 경우의 조건식은 생략합니다
: :           ReadFile(hComm, InBuff, 1, &dwBytesRead, NULL);
: :           if(dwBytesRead)
: :           {
: :             InBuff[dwBytesRead] = 0; // NULL TERMINATE THE STRING
: :             Synchronize(DisplayIt);
: :           }
: :  }

+ -

관련 글 리스트
22337 시리얼과 WIN2000 김용수 860 2002/10/30
31033     Re:시리얼과 WIN2000 국진(Ghost) 808 2002/10/30
23085     Re:시리얼과 WIN2000 심호용 863 2002/12/07
23102         Re:Re:시리얼과 WIN2000 김용수 822 2002/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.