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
[64456] USB 시리얼 포트 꼽거나 뽑을때 이벤트 생성시 Win 7에서 질문드립니다.
친구 [jjs8224] 2645 읽음    2011-05-27 18:25
C++ Builder 6 에서

Usb 시리얼 통신 제거시 아래와 같이 사용하는데

XP에서는 asCOMPortNo 에 정상적으로 'COM1' 이런식으로  정상 동작 되는데

Win 7 에서는 asCOMPortNo 값이 'C' 요러고 나와요

제가 운영체제가 XP라서 Win 7에서는 디버깅으로 보진 못했는데 혹시 원인을 아시나요?

제가 초보라서 Win 7과 XP의 차이점을 잘몰라서요...

부족한 제글 읽어 주셔서 감사합니다.

void __fastcall TRD_PsSPForm::OnMessages(Messages::TMessage &Message)
{
PDEV_BROADCAST_HDR        pdbch = (DEV_BROADCAST_HDR *)Message.LParam;
PDEV_BROADCAST_PORT     pdbcp = (PDEV_BROADCAST_PORT)Message.LParam;
//PDEV_BROADCAST_VOLUME    pdbcv = (PDEV_BROADCAST_VOLUME)Message.LParam;

if(Message.Msg == WM_DEVICECHANGE)    //USB 장치 연결상태변화
{

    switch(Message.WParam)
    {
        case DBT_DEVNODES_CHANGED:    //0x0007
        /*
        * Message = WM_DEVICECHANGE
        * wParam  = DBT_QUERYCHANGECONFIG
        * lParam  = 0
        *
        *      sent to ask if a config change is allowed
        */
            break;
        case DBT_DEVICEARRIVAL :    //0x8000  // system detected a new device
            //USB에 새로운 장치가 연결되어 사용가능한 상태가 된 경우...
            if(pdbch->dbch_devicetype == DBT_DEVTYP_PORT)
            {
                char *COMPortNo = pdbcp->dbcp_name;
                asTmp.sprintf("[%s] 포트가 시스템에 생성되었습니다", COMPortNo);
                if(ComPort1->Port == COMPortNo && RD_PsConnectButton->Caption == "Disconnect" )
                { //재접속
                    RD_PsInterfaceStart();
                    FormStorage1->SaveFormPlacement();
                }
                ShowMessage(asTmp);
            //    COMPort_PortCheck();
            }
            //ShowMessage("system detected a new device");
            break;

        case DBT_DEVICEREMOVECOMPLETE : //0x8004  // device is gone
             // USB에서 어떤 장치가 제거된 경우..
            if(pdbch->dbch_devicetype == DBT_DEVTYP_PORT)
            {
                char *COMPortNo = pdbcp->dbcp_name;
                ShowMessage(pdbcp->dbcp_reserved);
                AnsiString asCOMPortNo;
                asCOMPortNo.sprintf("%s",COMPortNo);
                asTmp.sprintf("[%s] 포트가 시스템에서 제거되었습니다", COMPortNo);
                ShowMessage(asTmp);
                if(ComPort1->Port == asCOMPortNo)
                {
                    if(ComPort1->Connected)
                    {    //Open 된 ComPort 같은것이 제거된경우 Close() 처리
                        RD_PsInterfaceEnd();
                    }
                }
            //    COMPort_PortCheck();
            }
            //ShowMessage("device is gone");
            break;
    }
}
else
{
    //TForm::WndProc(Message);
}
Message.Result = true;
}

+ -

관련 글 리스트
64456 USB 시리얼 포트 꼽거나 뽑을때 이벤트 생성시 Win 7에서 질문드립니다. 친구 2645 2011/05/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.