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
[48666] Re:Re:Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리
interest [interest] 2246 읽음    2007-03-29 22:36
음. 죄송합니다.
WM_DEVICECHANGE 메세지에서 Message.WParam의 값이 7이 나온다는건... 아마도 비트마스크 값인듯합니다.
dbt.h 파일을 불러서 보면, 제가 답변드린내용의 값은 아래와 같습니다.
/*
* The following messages are for WM_DEVICECHANGE. The immediate list
* is for the wParam. ALL THESE MESSAGES PASS A POINTER TO A STRUCT
* STARTING WITH A DWORD SIZE AND HAVING NO POINTER IN THE STRUCT.
*
*/
#define DBT_DEVICEARRIVAL               0x8000  // system detected a new device  <== 이것.
#define DBT_DEVICEQUERYREMOVE           0x8001  // wants to remove, may fail
#define DBT_DEVICEQUERYREMOVEFAILED     0x8002  // removal aborted
#define DBT_DEVICEREMOVEPENDING         0x8003  // about to remove, still avail.
#define DBT_DEVICEREMOVECOMPLETE        0x8004  // device is gone <== 이것.
#define DBT_DEVICETYPESPECIFIC          0x8005  // type specific event
#if(WINVER >= 0x040A)
#define DBT_CUSTOMEVENT                 0x8006  // user-defined event
#endif /* WINVER >= 0x040A */
보시다시피 도저히 7이란 값은 제가 설명드린 상황에서는 나올수 없는거지요. 따라서 이경우는 님께서 USB를 뽑았을때 라고 말씀하셨는데 아마도 제경우와는 아닌듯합니다. 즉 최소한 님의 작업환경을 모르고는 정확한 답변을 드릴수가 없네요. serial port 를 어떤 경우에 어떤 방식으로 연결해 쓰시는건지 알아야 테스트 해보고 답변을 드릴수 있을듯합니다. 물론 제가 그럴 환경이 된다면요.

제가 답변드린 내용은 님께서 USB To Serial 에서 USB를 뽑았을때 라고 말씀하셨으므로 이경우 제경험으로는 USB To Serial 로 디바이스 드라이브가 연결되어 있을 경우 장치를 넣었을때 Serial port 가 살아나고, 빼내었을 경우 Serial port가 죽어버립니다. 이때 양쪽의 경우에 전부 WM_DEVICECHANGE 메세지가 발생하고 각각의 상황정보가 WParam 에 들어있더라 그러니 그 값을보고 상황판단을 했는데 아무런 문제 없이 잘 돌아가더라.....  정도입니다.

실제로 제가 만든장치는 우리나라에서 판매되는 대부분의 디카 기능 핸드폰에서 usb 캐이블을 핸드폰과 연결했을때 연결된 핸드폰이 어느 회사의 어느모델, 어떤 통신사것인가를 우선 판단하고, 각각의 회사별 모델별 통신사별 serial port의 프로토콜이 천차만별이라서 적절히 사진을 읽어들이는 프로토콜이 구현되어 있는 사진 reading용 interface의 instance를 구해와 폰에 저장되어 있는 사진을 컴터의 하드디스크로 복사하는 프로그램이였습니다. 뭐 내용이야 다르겟지만  USB To Serial이라는 관점에선 같고 똑같이 USB에 연결되었을때와 연결이 끊어졌을 경우의 상황판단은 비슷할거라 생각했는데..
제가 덤벙대고 제경우만 생각하고 이렀더라 라고 삽질한 샘이네요.

아마 아래에 어떤 친절한 고수님께서 자세한 설명을 해 주실듯...
저는 이만 물러갑니다.

즐겁게~ 님이 쓰신 글 :
: 네.. 초보인지라, 부족한면이 많습니다. ^^;;
: 그리고... 답변주신것 너무 감사드립니다.
:
: 제가 드린 질문에서, 이벤트가 발생되지 않는다는 표현에 대해 조금 더 정확하게 말씀드리자면
:
: switch(Message.Msg)
: {
:     case WM_DEVICECHANGE: -> 이 이벤트는 발생이 되는데
:             switch(Message.WParam)  -> 이 값이 항상 7로 옵니다...
:             {
:                   case DBT_DEVICEARRIVAL :
:                            // 장치 들어 오는 처리
:                            break;
:                   case DBT_DEVICEREMOVECOMPLETE :
:                            // 장치가 빠짐 처리
:                            break;
:             }
:             break;
:         default:
:             break;
: }
:
: 그래서, case DBT_DEVICEARRIVAL 와 case DBT_DEVICEREMOVECOMPLETE 구분을 하지 못하고..
: 끙끙대고 있습니다.
: 꼼꼼하게 답해 주셨는데.. 제대로 적용못해 죄송하지만, 이 부분에 대한 답변도 꼭 부탁드립니다.

+ -

관련 글 리스트
48629 [질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1468 2007/03/28
48632     Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2768 2007/03/29
48645         Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1644 2007/03/29
48657             Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 1997 2007/03/29
48660                 Re:Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1491 2007/03/29
48666                     Re:Re:Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2246 2007/03/29
48671                         정말 감사드립니다~ 즐겁게~ 1306 2007/03/30
48640         Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 질문이 1870 2007/03/29
48668             Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2365 2007/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.