|
안녕하세요.
C++ 빌더 사용 유저입니다.
제가 지금 프로그램을 하나 만들고 있는데 갑자기 막히는 부분이 있어서..
도움 좀 청하고자 글 올립니다.
아래처럼 USB 이벤트를 사용하고 있는데요. (검색하면서 찾아낸 소스입니다^^:)
저도 아래 소스처럼 프로그램을 짰는데..
여러 USB 포트를 사용하다보니 문제가 생겼어요.
제 문제는 "DBT_DEVICEREMOVECOMPLETE" 부분입니다.
" 통신 중인 USB 포트가 아닌 다른 케이블을 빼도 통신이 종료가 됩니다. "
저 부분을 사용하지 않으면..
통신이 끊겼을 경우, 프로그램이 DOWN 되기 때문에 통신 종료를 해주는 부분은 꼭 필요합니다..
빠진 케이블이 현재 통신중인 케이블인지 아닌지 확인 하는 방법있을까요?..
: : : void __fastcall TComPortForm::OnMessages(Messages::TMessage &Message)
: : : {
: : : switch(Message.Msg)
: : : {
: : : case WM_DEVICECHANGE:
: : : switch(Message.WParam)
: : : {
: : : case DBT_DEVICEARRIVAL :
: : : CheckPort(); // 핸드폰 케이블이 꼽혔다. 꼽힌 핸드폰 USB Serial port 번호 찻아서 해당포트 open하기.
: : : break;
: : : case DBT_DEVICEREMOVECOMPLETE :
: : : ComPort1->Close(); // // 핸드폰 케이블이 빠졌다. 포트 뒷 정리.
: : : break;
: : : }
: : : Message.Result = true;
: : : break;
: : : default:
: : : TForm::WndProc(Message);
: : : }
: : : }
|