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
[12158] 시리얼 컴포넌트 ComPort에 대한 질문입니다.(소스 첨부)
박경원 [] 2148 읽음    2001-10-29 14:10
안녕하세요.빌더 초보입니다.

시리얼 컴포넌트인 ComPort을 어렵게 다운받아서 등록까지 완료했습니다.
그리고 예제 소스(빌더 5.0소스)를 컴파일 시키고 직접 rs-232c케이블을 연결시켜 통신을 해봤죠.
데이터 전송은 잘 되는데, 몇가지 문제가 발생해서요.

첫번째는 컴파일을 하면 [C++Warning]ComMainForm.cpp(3):W8058 Cannot create pre-compiled header:write failed란 경고 메세지가 뜨네요. 아무리 에러를 찾아봐도 잘 되지가 않네요.

두번째는 버튼중에 Store버튼기능과 Load버튼 기능이 있는데,
버튼을 누르면 프로그램 에러 메세지 창이 뜨러다구요.
에러 메세지는 다음과 같습니다.
먼저 Store버튼을 물렀을 때 에러메세지 입니다.
Project ComExampleCB5.exe raised exception class ERegistryException with message
'Failed to set data for 'Port''. Process stopped. Use Step or Run to continue.

두번째 Load버튼을 눌렀을 때의 에러메세지 입니다.
Project ComExampleCB5.exe raised exception class EConvertError with message '"is
not a valid integer value'.Process stopped. Use Step or Run to continue.

Store와 Load의 관련 함수는 다음과 같습니다.
정확히 Load와 Store(아래 함수의 기능)기능이 무엇이고 왜 에러가 뜨는지 알고 싶습니다.
void __fastcall TForm1::Bt_LoadClick(TObject *Sender)
{
  ComPort->LoadSettings(stRegistry, "HKEY_LOCAL_MACHINE\Software\Dejan");
//  ComPort->LoadSettings(stIniFile, "e:\test.ini");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Bt_StoreClick(TObject *Sender)
{
        ComPort->StoreSettings(stRegistry, "HKEY_LOCAL_MACHINE\Software\Dejan");
//  ComPort->StoreSettings(stIniFile, "e:\test.ini");
}
//---------------------------------------------------------------------------


세번째는 ComPort->ShowSetupDialog()입니다.
실행을 하고 Settings버튼을 누르면 port가 com1하나만 나오는데,
com2, com3, com4등의 항목을 나오게 할려면 어케 하면 되는지요.

네번째는 ComPort->Close() (또는 ComPort->Open();) 함수가 있는데,
Button_Open->Caption = "Open";(또는 Button_Caption-"Close")가 관련이 있는 것 같은데...
구체적으로 어떻게 관련이 있는지 알고 싶습니다.

그리고 마지막 질문인데요...
쓰레드 방식을 이용한 컴포넌트도 있고 또 기능중에는 타임기능도 있는데,
ComPort에는 이런 기능이 있는지요...
또 없다면 쓰레드 방시과 타임방식을 안 써도 무방한지요.
저의 경우 시리얼을 이용할 곳은 카메라 제어에 이용할려고 합니다.
그렇게 속도를 요하는 곳이 아닌 것 같은데...답변 부탁드립니다.

넘 질문이 방대하죠................
초보라 그러니 넓은 아량으로 봐주시고.....바쁜와중에도 답변해주시면 감사하겠습니다.


첨부:ComPort 예제 소스


ComExampleCB5.bpr(빌더5.0 소스)

/*********************** ComMainForm.h ***************************/

//-------------------------------------------------------------
#ifndef ComMainFormH
#define ComMainFormH
//-------------------------------------------------------------
#include <CPortCtl.hpp>
#include <CPort.hpp>
#include <ExtCtrls.hpp>
#include <StdCtrls.hpp>
#include <Dialogs.hpp>
#include <Forms.hpp>
#include <Controls.hpp>
#include <Graphics.hpp>
#include <Classes.hpp>
#include <SysUtils.hpp>
#include <Messages.hpp>
#include <Windows.hpp>
#include <SysInit.hpp>
#include <System.hpp>
//-------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Componets
    TComPort* ComPort;
    TMemo* Memo;
    TButton* Button_Open;
    TButton* Button_Settings;
    TEdit* Edit_Data;
    TButton* Button_Send;
    TCheckBox* NewLine_CB;
    TPanel* Panel1;
    TButton* Bt_Store;
    TButton* Bt_Load;
    TComLed* ComLed1;
    TComLed* ComLed2;
    TComLed* ComLed3;
    TComLed* ComLed4;
    TLabel* Label2;
    TLabel* Label3;
    TLabel* Label4;
    TLabel* Label5;
    TComLed* ComLed5;
    TComLed* ComLed6;
    TLabel* Label1;
    TLabel* Label6;
    void __fastcall Button_OpenClick(TObject* Sender);
    void __fastcall Button_SettingsClick(TObject* Sender);
    void __fastcall Button_SendClick(TObject* Sender);
    void __fastcall ComPortOpen(TObject* Sender);
    void __fastcall ComPortClose(TObject* Sender);
    void __fastcall ComPortRxChar(TObject* Sender, int Count);
    void __fastcall Bt_LoadClick(TObject* Sender);
    void __fastcall Bt_StoreClick(TObject* Sender);
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* AOwner);
};
//-------------------------------------------------------------
extern PACKAGE TForm1* Form1;
//-------------------------------------------------------------
#endif





/*********************** ComMainForm.cpp ***************************/

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "ComMainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_OpenClick(TObject *Sender)
{
  if (ComPort->Connected)
    ComPort->Close();

  else
    ComPort->Open();
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button_SettingsClick(TObject *Sender)
{
  ComPort->ShowSetupDialog();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button_SendClick(TObject *Sender)
{
  AnsiString Str;

  Str = Edit_Data->Text;
  if (NewLine_CB->Checked)
    Str = Str + "\r\n";
  ComPort->WriteStr(Str);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ComPortOpen(TObject *Sender)
{
  Button_Open->Caption = "Open";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ComPortClose(TObject *Sender)
{
  Button_Open->Caption = "Close";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ComPortRxChar(TObject *Sender, int Count)
{
  AnsiString Str;

  ComPort->ReadStr(Str, Count);
  Memo->Text = Memo->Text + Str;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Bt_LoadClick(TObject *Sender)
{
  ComPort->LoadSettings(stRegistry, "HKEY_LOCAL_MACHINE\Software\Dejan");
//  ComPort->LoadSettings(stIniFile, "e:\test.ini");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Bt_StoreClick(TObject *Sender)
{
        ComPort->StoreSettings(stRegistry, "HKEY_LOCAL_MACHINE\Software\Dejan");
//  ComPort->StoreSettings(stIniFile, "e:\test.ini");
}
//---------------------------------------------------------------------------










+ -

관련 글 리스트
12158 시리얼 컴포넌트 ComPort에 대한 질문입니다.(소스 첨부) 박경원 2148 2001/10/29
12182     Re:시리얼 컴포넌트 ComPort에 대한 질문입니다.(소스 첨부) 개박살.U&I 2488 2001/10/30
12185         Re:Re:시리얼 컴포넌트 ComPort에 대한 질문입니다.(소스 첨부) heartsim 1969 2001/10/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.