本文主要是介绍串口插拔自动检测程序思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <dbt.h>HDEVNOTIFY hDevNotify; //硬件插拔句柄
//注册消息
DEV_BROADCAST_DEVICEINTERFACE dbdi;
memset(&dbdi,0,sizeof(dbdi));
dbdi.dbcc_size = sizeof(dbdi);
dbdi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
hDevNotify = RegisterDeviceNotification(Handle,&dbdi,DEVICE_NOTIFY_WINDOW_HANDLE|DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);
注册之后,就能收到 WM_DEVICECHANGE 消息了
if(Message.Msg == WM_DEVICECHANGE) // 硬件插拔
{
if(Message.WParam==DBT_DEVICEARRIVAL) // 新硬件插入
{
}
if(Message.WParam==DBT_DEVICEREMOVECOMPLETE) // 硬件拔出
{
}
}
注销硬件插拔事件
if(hDevNotify)
{
UnregisterDeviceNotification(hDevNotify);
hDevNotify = NULL;
}
注销之后,就收不到插拔事件了
WM_DEVICECHANGE 是需要注册了使用的,不注册是收不到消息的
WM_DEVICECHANGE 消息里面,WParam 等于 DBT_DEVICEARRIVAL 的时候,说明有新硬件,在此
处扫描新串口
WParam 等于 DBT_DEVICEREMOVECOMPLETE 的时候,可能会有串口消失,所以也需要重新扫描
串口
这篇关于串口插拔自动检测程序思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!