|
cport263 컴포넌트를 제가 사용해 보지 않아서 정확하게 설명드리기는 힘들지만, 이런 에러는 기본적으로 예외처리하여 주시는 방법으로 처리하여야 할 것 같습니다.
일단 사용자가 선택을 하면 해당 시리얼포트를 열어(Open) 보고 정상적으로 열리지 않으면, 에러메세지를 뿌리고, 사용자로부터 다시 입력을 받는 것이죠.
heartsim 님이 쓰신 글 :
: 시리얼 통신을 하는데 cport263버전을 사용하고 있습니다.
: 다른 것은 문제가 안 되는데, comport1->ShowSetupDialog()에서 com1이 아닌 사용할 수 없는
: 다른 포트를 선택했을 경우, 아래와 같은 에러가 뜨는데...에러처리할 수 있는 방법이 없을가요?
: (다이얼로그에는 com1, com3, com4, com5가 나오는데, 이중에서 com1 포트만 사용가능 상태)
:
: 다음과 같은 에러메세지가 나는군요.
: Project zoom_p.exe raised exception class EComPort with message 'Unable to open com port
: (with error code:2).'Process stopped. Use Step or Run to continue.
:
: 일단 제가 아래와 같이 처리를 했습니다.
: 근데 문제는 컴파일하고 실행한 후 serialcom1단추를 누르면 통신설정 다이얼로그가 나오고
: 그 상태에서 com1이외의 것을 선택하면 위와 같이 에러가 나면서 멈춰버립니다.
: 근데, 생성된 실행파일만을 가지고 실행하면 아래와 소스와 같이 작동 합니다.
: 그러나 문제는 강제적으로 com1으로 다시 설정했다는거죠.
: 만약 com1이 아닌 com2나 com3를 사용한다면 그 경우도 고려를 해줘야 하는데,
: 생각외로 쉽게 로직이 안 돌아가는군요.
:
: 음...cport263컴포넌트에 보니 OnError이벤트가 있는데 혹 이걸로 체크할 수 있나요?
: 사용법을 잘 모르겠어요. 아시는 분은 답글 부탁드려요....참 힘듭니다..--.--;;
:
:
:
: void __fastcall TForm1::SERIALCOM1Click(TObject *Sender) //나 이것 땜시 일주일 머리 .....^^
: {
: try{
: ComPort1->ShowSetupDialog();
: }
: catch(Exception &EComPort){
: ShowMessage("Fail to COM");
:
: ComPort1->Port="COM1";
: ComPort1->Connected=true;
:
: // if(ComPort1->Connected==true)
: // ShowMessage("Success COM1 Setting");
: // else
: // ShowMessage("Fail COM1 Setting");
: //}
: // ComPort1Error(Sender,ceIO);
:
: }
|