打印

68013开发时如何检测设备的插入和拨掉?

[复制链接]
2411|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wowow|  楼主 | 2007-11-24 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是CyApi的CCyUSBDevice类做的。先打算用事件,但一次插拨中有很多事件发生,很不好判断。只好在定时器里查,查联上好说,设个变量,如果之前没有联上就搜索设备。断开没有找到合适的判断方法,现在暂时用GetCount()==0来判断。有什么比较好的方法吗?

附用事件的测试代码和结果:
BOOL CUSBFileTransforExampleDlg::OnDeviceChange( UINT nEventType, DWORD_PTR dwData  ){
     PDEV_BROADCAST_HDR pDEV=( PDEV_BROADCAST_HDR )dwData;
     CString Str="";
     CString Str2="";


    if(nEventType==DBT_DEVICEARRIVAL){
        Str="DEVICEARRIVAL: ";
    }else if(nEventType==DBT_DEVNODES_CHANGED){
        Str="DEVNODES_CHANGED:";
    }else if(nEventType==DBT_DEVICEREMOVECOMPLETE){
        Str="DEVICEREMOVECOMPLETE:";
    }
    if(pDEV!=NULL){
        Str2.Format("devicetype=%d size=%d",pDEV->dbch_devicetype,pDEV->dbch_size);
    }
    else
        Str2="NULL LParam ";
    UpdataHistoryEdit(Str+Str2);
    return 1;
}

插上设备时显示:
DEVNODES_CHANGED:NULL LParam

DEVICEARRIVAL: devicetype=5 size=188
DEVNODES_CHANGED:NULL LParam

DEVNODES_CHANGED:NULL LParam

DEVICEREMOVECOMPLETE:devicetype=5 size=188
DEVNODES_CHANGED:NULL LParam

devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55
DEVICEARRIVAL: devicetype=5 size=188
DEVNODES_CHANGED:NULL LParam

devicetype=6 size=55
devicetype=6 size=55
devicetype=6 size=55

拨掉设备显示:
DEVNODES_CHANGED:NULL LParam

DEVICEREMOVECOMPLETE:devicetype=6 size=44
DEVICEREMOVECOMPLETE:devicetype=5 size=188

插拨USB鼠标也有事件。。。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

649

帖子

3

粉丝