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
[49508] Re:cport 2.64를 이용하여 win98과 winxp 두종에 대하여 통신이 가능한가요?
금목암 [iconms1] 1152 읽음    2007-06-01 17:18
win95,win98하고 nt나 xp 는 통신에쓰는 라이브러리가 달라서 안될것 같습니다
visual basic ,visul c++에서도 2개용으로 짜서 셋업시 현재 os에 맟게 설치하게
했습니다
그리고 원칙적으로 요즘 95나 98쓰는 분도 없고 os구하려고 해도 구하기 어렵죠
xp도 곧 없어진다는데 (내년까지만 업그레이드 지원함)
이젠 비스타용으로 준비해야 하실지도 모르겠네요
----------------------------------------------------------------
산하 님이 쓰신 글 :
: 안녕하세요...
: 제가 옛날에 win98환경에서 CBuilder 5.0으로 cport 2.64를 이용하여 시리얼 통신을 구현하였는데...
: 수년이 지난 지금에는 win98도 사용하고 winxp도 사용한다고 합니다.
: 그런데 문제가 되는것이 지금의 제 컴파일 환경은 winxp pro 환경에 CBuilder 5.0, cport 2.64이고 소스는 과거(win98)에 짠 소스를 가지고 있습니다...
:
: 지금의 환경에서 과거 win98과 winxp 둘다 시리얼 통신이 가능한지 궁금하여 이렇게 고수님들에게 여쭈어 봅니다.
: 가능할까요? 가능하다면 방법이 있는지...? 질의 응답을 두루 둘러 보았는데 cport 2.64를 포기하고 다른 컴포넌트로 사용하면 가능한지? 궁금합니다...
:
: 참고로...
: 제 cpp 소스를 추가해 보았습니다... --;;;
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #include <stdio.h>
: #include <Dos.h>
: #include <IniFiles.hpp>
: #pragma hdrstop
:
: #include "Main.h"
: #include "select.h"
: #include "MainStorage.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma link "CPort"
: #pragma resource "*.dfm"
: TMain *Main;
: //---------------------------------------------------------------------------
: __fastcall TMain::TMain(TComponent* Owner)
:         : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
: void __fastcall TMain::SpeedButton1Click(TObject *Sender)
: {
:     AnsiString SendBuf;
:
:     if(!ComPort1->Connected)
:         ComPort1->Open();
:     if (!ComPort1->Connected)
:     {
:         Application->MessageBox("직렬 포트를 열수 없습니다. 프린터와 통신을 할 수 없습니다.\n직렬 포트를 다른 프로그램이 사용하고 있는지 확인하세요.", "직렬 포트 열기 에러", MB_ICONSTOP | MB_OK);
:         return;
:     }
:
:     if (!CheckSP(3)) {
:         Application->MessageBox("시리얼에 응답이 없습니다. 프린터 전원이 연결 되었는지, 케이블이 PC와의 연결 상태가 올바른지 확인하십시요.", "시리얼 에러", MB_ICONSTOP | MB_OK);
:         ComPort1->Close();
:         return;
:     }
:
:     int cnt = 1;
:     //송신
:     ComPort1->WriteStr("TEST001");
:     ComPort1->WriteStr("SPEC정의");
:     ComPort1->Close();
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TMain::SpeedButtonExitClick(TObject *Sender)
: {
:     Close();       
: }
: //---------------------------------------------------------------------------
: void __fastcall TMain::ComPort1RxChar(TObject *Sender,
:       int Count)
: {
:     AnsiString Str;
:     int i;
:     ComPort1->ReadStr(Str, Count);
:
:     for (i = 1 ; i<=Count ; i ++)
:     {
:         if (Str.SubString(i,1) == "(")
:             strComBuffer = "";
:         else if (Str.SubString(i,1) == "\n" )
:         {
:             if(strComBuffer.SubString(1,2) == "OK") {
:                 m_bCheckSP = TRUE;
:                 strComBuffer = "";
:             }
:         }
:         else
:             strComBuffer += Str.SubString(i,1);
:     }
:
:    
: }
: //---------------------------------------------------------------------------
: bool __fastcall TMain::CheckSP(int nTime)
: {
:    AnsiString Buffer;
:    m_bCheckSP = false;
:    ComPort1->WriteStr("ACK");
:    Sleep(100);
:    struct time t;
:    int nOld, nMax = nTime, nCount = 0, nESTCount = 1;
:    gettime(&t);
:    nOld = t.ti_sec;
:    while(1)
:    {
:         gettime(&t);
:         if (nOld != t.ti_sec)
:         {
:             nCount++;
:             nOld = t.ti_sec;
:             if (nCount == nMax)
:             {
:                return false;
:             }
:             if (nESTCount == 1)
:             {
:                ComPort1->WriteStr("NAK");
:                nESTCount = 0;
:             }
:             nESTCount++;
:         }
:         MSG message;
:         if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
:         {
:             TranslateMessage(&message);
:             DispatchMessage(&message);
:         }
:         if (m_bCheckSP)
:             break;
:    }
:    m_bCheckSP = false;
:    Sleep(100);
:    return true;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TMain::FormShow(TObject *Sender)
: {
:     TIniFile *ini;
:     ini = new TIniFile(ChangeFileExt(Application->ExeName,".INI"));
:     ComPort1->Port = ini->ReadString("PORT_CHECK","SELECT","COM1");
:     if(ComPort1->Port == "COM1")
:         RadioGroupPort->ItemIndex = 0;
:     else
:         RadioGroupPort->ItemIndex = 1;
:     delete ini;
:
: //    EditArr->SetFocus();
:
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TMain::FormClose(TObject *Sender,
:       TCloseAction &Action)
: {
:     TIniFile *ini;
:     ini = new TIniFile(ChangeFileExt(Application->ExeName,".INI"));
:     ini->WriteString("PORT_CHECK","SELECT" ,RadioGroupPort->Items->Strings[RadioGroupPort->ItemIndex]);
:     delete ini;
:
: }
:
: //---------------------------------------------------------------------------
: void __fastcall TMain::m_edGeoKeyPress(TObject *Sender,
:       char &Key)
: {
:     if(Key == 13) EditPrd->SetFocus();   
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TMain::m_edSuKeyPress(TObject *Sender,
:       char &Key)
: {
:     if (Key == 13) SpeedButton1Click(this);   
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TMain::RadioGroupPortClick(TObject *Sender)
: {
:     switch(RadioGroupPort->ItemIndex)
:     {
:         case 0 :
:             ComPort1->Port = "COM1";
:             break;
:         case 1 :
:             ComPort1->Port = "COM2";
:             break;
:     }
:
: }
: //---------------------------------------------------------------------------

+ -

관련 글 리스트
49491 cport 2.64를 이용하여 win98과 winxp 두종에 대하여 통신이 가능한가요? 산하 1070 2007/06/01
49508     Re:cport 2.64를 이용하여 win98과 winxp 두종에 대하여 통신이 가능한가요? 금목암 1152 2007/06/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.