关于USB口的插拔检测解决办法
关于USB口的插拔检测
写一段关于USB口的插拔检测时 遇到一个问题 代码是
运行后,插拔USB设备时,没有弹出窗,经检测是程序没有进入 if((DBT_DEVICEREMOVECOMPLETE==Message.WParam)||(DBT_DEVICEARRIVAL==Message.WParam)) 循环;请问是什么原因?
------解决思路----------------------
在if这一行加个断点,看看Message.WParam的值是多少。
写一段关于USB口的插拔检测时 遇到一个问题 代码是
void __fastcall TForm1::OnDeviceChange(TMessage Message){
PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)Message.LParam;
GUID myGuid=GUID_DEVINTERFACE_MYSTM32USB; //设备接口类GUID 在intrface.h文件中定义
PDEV_BROADCAST_DEVICEINTERFACE pDevInf;
if((DBT_DEVICEREMOVECOMPLETE==Message.WParam)||(DBT_DEVICEARRIVAL==Message.WParam))
{
switch(pHdr->dbch_devicetype)
{
case DBT_DEVTYP_DEVICEINTERFACE:
pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)pHdr;
if(pDevInf->dbcc_classguid==myGuid)//判断拔出设备的设备接口类和usb2can设备
//的设备接口类是否一致
{
switch(Message.WParam)
{
case DBT_DEVICEREMOVECOMPLETE:
Timer1->Enabled=false;
Label1->Caption=Communication_State[0];
Application->MessageBox("设备连接断开!请检查设备接线是否正确","警告信息",MB_OK);
break;
case DBT_DEVICEARRIVAL:
Application->MessageBox("检测到设备接入!","提示信息",MB_OK);
HWInitial();
FlushFIFO();
ccp.ccpConnect();
Label1->Caption=Communication_State[1];
break;
default:break;
}
}
break;
case DBT_DEVTYP_HANDLE:
//Edit4->Text="HANDLE";
break;
case DBT_DEVTYP_OEM:
//Edit4->Text="OEM";
break;
case DBT_DEVTYP_PORT:
//Edit4->Text="PORT";
break;
case DBT_DEVTYP_VOLUME:
//Edit4->Text="VOLUME"; //U盘拔出响应
break;
}
}
}
运行后,插拔USB设备时,没有弹出窗,经检测是程序没有进入 if((DBT_DEVICEREMOVECOMPLETE==Message.WParam)||(DBT_DEVICEARRIVAL==Message.WParam)) 循环;请问是什么原因?
------解决思路----------------------
在if这一行加个断点,看看Message.WParam的值是多少。