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
[12914] Re:Re:[질문] 포트 초기화 실패입니다..
박보연 [] 1417 읽음    2001-11-21 11:49
안녕하세요? 개박살님.. 답변 감사합니다.

컴파일 에러는 아니고, 포트 초기화 실패입니다.
말씀하신대로(L을 붙여서..) 했는데도 마찬가지네요..

WinCom API는 시스템베이스(주)(http://www.sysbas.co.kr/) 자료실에서 다운받아
컴포넌트를 등록해서 사용하고 있는데, long형으로 설정되어 있습니다.
예제 프로그램에서는 실행이 잘 됐었는데, 조금 바꿔서 해보려니까 잘 안되네요..


예제 프로그램에서는 이렇게 사용했습니다.
//---------------------------------------------------------------------------

void __fastcall TForm1::btnOPENCLOSEClick(TObject *Sender)
{
   long ret, len;
   char DataSpecBk[500];
   long BPS, ParityBit, DataBits, StopBits;
   int pos;

   m_PortNumber = StrToInt(cboPORT->Text.SubString(4, cboPORT->Text.Length()));

   if(m_fopen) {

      ret = Wincom1->opencom(m_PortNumber);
      if(ret != 0) {
         Application->MessageBox("Can't open the port", "Warning", MB_OK);
         return;
     }

      strcpy(DataSpecBk, cboSETTING->Text.c_str());

      if(DataSpecBk[4]== ',') {
         BPS = StrToInt(AnsiString(DataSpecBk, 4));
         pos = 5;
      } else if(DataSpecBk[5] == ',') {
         BPS = StrToInt(AnsiString(DataSpecBk, 5));
         pos = 6;
      } else {
         BPS = StrToInt(AnsiString(DataSpecBk, 6));
         pos = 7;
      }

      switch(DataSpecBk[pos]) {

         case 'N' : ParityBit = 0;      break;
         case 'O' : ParityBit = 8;      break;
         case 'E' : ParityBit = 0X18;   break;
      }

      pos += 2;
      DataBits = StrToInt(DataSpecBk[pos]) - 5;

      pos += 2;
      StopBits = StrToInt(DataSpecBk[pos]) - 1;

      ret = Wincom1->setcom(m_PortNumber, (ParityBit | DataBits | StopBits), BPS);

      if(ret != 0) {
         Application->MessageBox("Can't open the port", "Warning", MB_OK);
         return;
      }

      CloseDlg();

      btnOPENCLOSE->Caption = "CLOSE";
      m_fopen = False;

      len = StrToInt(8);
      ret = Wincom1->ondata(m_PortNumber, len);

      strcpy( m_SendCharsWhenEmpty, "");

         Timer1->Enabled  = true;
         Timer1->Interval = 3000;
    } else {
      ret = Wincom1->closecom(m_PortNumber);
      if(ret != 0) {
         Application->MessageBox("Can't close the port", "Warning", MB_OK);
         Close();
      }

      OpenDlg();

      btnOPENCLOSE->Caption = "OPEN";
      m_fopen = true;
     }
}
//---------------------------------------------------------------------------


콤보박스에서 포트와 프로토콜을 설정하고, 버튼을 클릭하면 포트가 열리게 되어있습니다.
참고로 프로토콜 설정 콤보박스의 Items에는 아래와 같은 값들이 들어 있습니다.

  1200,N,8,1
  2400,N,8,1
  4800,N,8,1
  9600,E,7,2
  9600,N,8,2
  19200,N,8,1
  38400,N,8,1
  57600,N,8,1
  115200,N,8,1

값을 고정(9600,N,8,2으로..)시키려고 하는데, 생각처럼 되지 않네요.

너무 쉽게 알려고 하는건 아닌지 해서 혼자 이렇게 저렇게 고민하다가 질문 드립니다.

그럼.. 답변 기다리겠습니다.


+ -

관련 글 리스트
12886 [질문] 시리얼 통신에서 포트를 설정할 때... 박보연 790 2001/11/20
12909     Re:[질문] 시리얼 통신에서 포트를 설정할 때... 개박살.U&I 1120 2001/11/21
12914         Re:Re:[질문] 포트 초기화 실패입니다.. 박보연 1417 2001/11/21
12920             Re:Re:Re: 해결됐습니다~~ ^__^ 박보연 920 2001/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.