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

[复制链接]
3064|0
 楼主| wowow 发表于 2007-11-24 10:34 | 显示全部楼层 |阅读模式
用的是CyApi的CCyUSBDevice类做的。先打算用事件,但一次插拨中有很多事件发生,很不好判断。只好在定时器里查,查联上好说,设个变量,如果之前没有联上就搜索设备。断开没有找到合适的判断方法,现在暂时用GetCount()==0来判断。有什么比较好的方法吗?<br /><br />附用事件的测试代码和结果:<br />BOOL&nbsp;CUSBFileTransforExampleDlg::OnDeviceChange(&nbsp;UINT&nbsp;nEventType,&nbsp;DWORD_PTR&nbsp;dwData&nbsp;&nbsp;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDEV_BROADCAST_HDR&nbsp;pDEV=(&nbsp;PDEV_BROADCAST_HDR&nbsp;)dwData;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;Str=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;Str2=&quot;&quot;;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(nEventType==DBT_DEVICEARRIVAL){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str=&quot;DEVICEARRIVAL:&nbsp;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(nEventType==DBT_DEVNODES_CHANGED){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str=&quot;DEVNODES_CHANGED:&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(nEventType==DBT_DEVICEREMOVECOMPLETE){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str=&quot;DEVICEREMOVECOMPLETE:&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if(pDEV!=NULL){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str2.Format(&quot;devicetype=%d&nbsp;size=%d&quot;,pDEV-&gtdbch_devicetype,pDEV-&gtdbch_size);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str2=&quot;NULL&nbsp;LParam
&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;UpdataHistoryEdit(Str+Str2);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />}<br /><br />插上设备时显示:<br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />DEVICEARRIVAL:&nbsp;devicetype=5&nbsp;size=188<br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />DEVICEREMOVECOMPLETE:devicetype=5&nbsp;size=188<br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />DEVICEARRIVAL:&nbsp;devicetype=5&nbsp;size=188<br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br />devicetype=6&nbsp;size=55<br /><br />拨掉设备显示:<br />DEVNODES_CHANGED:NULL&nbsp;LParam<br /><br />DEVICEREMOVECOMPLETE:devicetype=6&nbsp;size=44<br />DEVICEREMOVECOMPLETE:devicetype=5&nbsp;size=188<br /><br />插拨USB鼠标也有事件。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

649

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部