MFC串口热拔插与可用串口自动检测的实现方法
在网上看找了很多关于串口自动检测检测与热拔插的实现,感觉比较麻烦,很多不能直接拿过来用。笔者参考了网上的一些方法,自己写了一个比较简单的实现方式。由于本人水平有些,不足之处请谅解!
主要可分为以下几个部分
1.CSerialportDlg.h中添加以下代码
protected:
//实现串口热插拔
afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
afx_msg void RefreshCom(void);
BOOL EnumSerialPort(CStringArray& saCom);
2.CSerialportDlg.c中添加以下代码
主要是对头文件的三个函数声明的代码实现
#include <Dbt.h> //需要在CSerialportDlg.c的头文件中添加此头文件
//否则OnDeviceChange(函数中的宏定义会报错)
BOOL CSerialportDlg::OnDeviceChange(UINT nEventType, DWORD dwData)
{
switch (nEventType)
{
//串口被移除
case DBT_DEVICEREMOVECOMPLETE:
RefreshCom();
break;
//串口插入或者变为有效
case DBT_DEVICEARRIVAL:
RefreshCom();
break;
default:
break;
}
return TRUE;
}
void CSerialportDlg::