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
[19897] Re:[질문] Win98 과 WinXP 에서의 RS-232 통신 에러
유영인.Chris [cuperido] 1275 읽음    2002-07-07 05:13
CreateFile API 가 WInXP에서 문제가 있다는 것을 본적이 있는것 같네요. WriteFile도 그럴지도 모르구요. 저는 시간두 많이 없구해서 영향을 받지 않는 라이브러리를 받아서 썼었습니다. 비교적 괜찮은 라이브러니입니다.

CPortLib 구요. 첨부시켜 놓았습니다.


kabaliero 님이 쓰신 글 :
: : : : : : :

안녕하세요..

:

오늘 RS-232 통신을 하다가 발생한 문제인데요.. 고수님들의 답변을 : 부탁드립니다.

:

다름이 아니라, Win98에서는 통신이 잘 되던 프로그램이 XP에서는 WriteFile 함수 : 호출부분에서 아무 응답 없이 죽어버립니다.

:

XP에서 컴파일을 해봐도 같은 문제가 발생하면서 죽어버리네요..

:

도저히 해결책을 모르겠습니다.

:

아래 소스(생성자부분과 Write File 부분) 올립니다.. : 부탁드리겠습니다.

:

__fastcall TForm1::TForm1(TComponent* Owner) : : TForm(Owner)
{

   cc.dwSize : = sizeof(COMMCONFIG);
   BuildCommDCB("9600,N,8,1", : &cc.dcb);

:

   if ((hComm = CreateFile ("COM1", : GENERIC_READ|GENERIC_WRITE,
  0, NULL, OPEN_EXISTING, 0, NULL)) == : INVALID_HANDLE_VALUE)
   {
      : ShowMessage("Error opening COM port");
      : return;
 }

:

   if (!SetCommState(hComm, : &cc.dcb))
   {
      CloseHandle : (hComm);
      ShowMessage("포트 설정 : ERROR!");
      return;
   : }
   cp.wPacketLength = sizeof(COMMPROP);
   : GetCommProperties(hComm, &cp);

:

   bReading = : TRUE;
   if ((hThread = CreateThread (NULL, : 0,
    (LPTHREAD_START_ROUTINE)ReadThread, NULL,0, &id)) : == INVALID_HANDLE_VALUE)
   {
      : ShowMessage("Error creating READ thread");
      : CloseHandle (hComm);
      return;
   : }
}

:

========================================================================

:

int __fastcall TForm1::NetWriteString(unsigned char : *pszString, int cbString)
{
   if(TX_enable)
   : {
      TX_enable = 0;
   :  int i;
    LONG lrc;

:

      Tx_cnt = : cbString;
      Test_tmr = send_time;

:

      for(i = 0 ; i < : Tx_cnt ; i++)
      : {
         Tx_Buf[i] = : pszString[i];
      }

:

    for (i = 0; i < cbString; : i++)
      : {
         unsigned char Ch = : pszString[i];
     if (!WriteFile(hComm, (LPBYTE)&Ch, : 1, (LPDWORD)&lrc, NULL))
         : {
        locProcessCommError(GetLastError : ());
     }
      : }
      TX_enable = 1;
   : }
   return cbString;
}

: :
:

+ -

관련 글 리스트
19867 [질문] Win98 과 WinXP 에서의 RS-232 통신 에러 kabaliero 885 2002/07/06
19897     Re:[질문] Win98 과 WinXP 에서의 RS-232 통신 에러 유영인.Chris 1275 2002/07/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.