【MFC】串口热拔插的消息处理

本文介绍了如何在MFC应用程序中处理串口设备的热拔插消息。通过在BEGIN_MESSAGE_MAP中添加相应代码,并实现相关函数,确保在设备连接或断开时能正确响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先在BEGIN_MESSAGE_MAP(C串口通信助手Dlg, CDialogEx)中添加

ON_WM_DEVICECHANGE();

然后函数实现:

BOOL C串口通信助手Dlg::OnDeviceChange(UINT nEventType, DWORD dwData)
{
	//0x4d36e978L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18
	//DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;

	DEV_BROADCAST_HDR* dhr = (DEV_BROADCAST_HDR *)dwData;
	TRACE("--nEventType--:%d\n", nEventType);
	switch (nEventType)
	{
	case DBT_DEVICEREMOVECOMPLETE://移除设备
		TRACE("--DEVICE REMOVE--\n");
#if 1
		if (dhr->dbch_devicetype == DBT_DEVTYP_PORT)
		{
			PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)dhr;
			int len = strlen((const char *)lpdbv->dbcp_name);
			CString name(lpdbv->dbcp_name);//COM8
			int port = 0;
			sscanf((const char *)name.GetBuffer(0), "COM%d", &port);

			m_bOpenCom = FALSE;
			if (m_cmsCom.get_PortOpen())
				m_cmsCom.put_PortOpen(FALSE);    //关闭串口
			MessageBox(na
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值