MFC检测串口插拔

以对话框工程为例

头文件中

afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);

cpp中

ON_WM_DEVICECHANGE() 

然后实现函数

BOOL CXXDlg::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(lpdbv->dbcp_name);
			CString name(lpdbv->dbcp_name);//COM8
			int port = 0;
			sscanf(name.GetBuffer(0), "COM%d", &port);
		}
#endif
		TRACE("--DEVICE REMOVE--end\n");
		break;
	case DBT_DEVICEARRIVAL://添加设备
		TRACE("--DEVICE ARRIVAL--\n");
#if 1
		if(dhr->dbch_devicetype == DBT_DEVTYP_PORT)
		{
			PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)dhr;
			int len = strlen(lpdbv->dbcp_name);
			CString name(lpdbv->dbcp_name);//COM8
			int port = 0;
			sscanf(name.GetBuffer(0), "COM%d", &port);
		}
#endif
		break;
	default:
		break;
	}

	return TRUE;

}

MFC检测串口插拔

时间: 2024-10-24 13:38:10

MFC检测串口插拔的相关文章

Windows 下编程检测显示器信息及插拔

Windows下提示显示器信息主要通过两个函数实现.一个是EnumDisplayDevices(), 另一个是EnumDisplayMonitors(). EnumDisplayDevices()枚举所有显示设备,而EnumDisplayMonitors枚举的是所有显示器.显示设备和显示器不一样,比如显卡算显示设备,但是不是显示器.具体差别后面会分析.EnumDisplayMonitors()还会枚举出不可见的伪显示器,如果只是想得到实际的显示器数目的话可以用GetSystemMetrics(S

C#.NET U盘插拔监控

[1]涉及的知识点 1) windows消息处理函数 ? 1 protected override void WndProc(ref Message m) 捕获Message的系统硬件改变发出的系统消息 2) 硬件信息类 ? 1 DriveInfo [2]核心函数 消息常量: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /// <summary> /// windows消息常量 /// </summary> class CWn

iOS 检测耳机插入/拔出

http://www.verydemo.com/demo_c134_i28481.html 开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时,指定声音输出设备 检测耳机的插入和拔出 第一个问题,对于iTouch和iPad等本身不带麦克风的设备,需要检查是否插入了带录音功能的耳机:对于iphone,由于其本身已近自带麦克风,所以相对容易.第二个问题,当在本身带有外放的设备上插入耳机等输出设备时,就出现了多个输出设备,需要实现在程序中指定将声

我心中的核心组件(可插拔的AOP)~大话开篇及目录

我心中的核心组件(可插拔的AOP)~大话开篇及目录 http://www.cnblogs.com/lori/p/3247905.html 回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等. 对于以上内容可以说即是一个大餐,又是一个挑战,就让我带着大家去迎接这份挑战吧,呵呵! 可插拔的AOP AOP即面向切面的编程,是指将一个公用的与领域无

玩转Oracle之12c 可插拔数据库数据泵功能体验

:数据泵可以高效备份.复制.保护和传输大量的数据和源数据.在导入和导出过程中可以做到过滤数据和对象,并且能够在全数据库级.方案级.表级和表空间级实现导入导出. Oracle12c的datapump功能跟以前差不多,在多租户的环境中执行导入\导出以及使用一些更细化的参数的时候,几乎没有区别,依然很好用,效率很高.目前有很多的用户仍然在使用exp/imp工具在执行一些迁移.备份.过滤和转移数据的工作,相比起来,数据泵的效率更高.更易用并且更方便管理,但exp/imp在有些时候可以完成datapump

USB-Blaster的插拔顺序

前几天发现我的fpga的板子的jtag口不慎烧坏了,万分悲痛,先实验室大神级的师兄请教了一下,他让我看个文档,原来发现自己经常对插拔顺序很不规范,很有可能就是因为这个原因二导致的.以下是建议的插拔顺序,觉得有点道理,贴出来和大家分享一下. 推荐插拔顺序 插线顺序 1. 关闭FPGA开发板的电源: 2. 将JTAG仿真器的JTAG线缆连接至FPGA开发板的JTAG接口: 3. 在仿真器的USB接口上插入USB线缆(假设USB线缆的另一段已经插在电脑上): 4. 打开FPGA开发板的电源. 步骤2和

oracle12c新特点——可插拔数据库(Pluggable Database,PDB)

1.    12c PDB新特点的优势 1)    可以把多个PDB集成进一个平台. 2)    可以快速提供一个新的PDB或一个已有PDB的克隆. 3)    通过拔插技术,可以快速把存在的数据库重新部署到一个新平台上. 4)    多个PDB数据库补丁或升级一次完成. 5)    通过把单个PDB拔插到较高版本的不同CDB,可以补丁或升级一个PDB. 6)    从同一个CDB中众多PDB中分离出某个PDB的内容. 7)    分离这些PDB应用管理员的责任. 2.    12c PDB新特

网络游戏中应用可插拔工厂处理消息

嫌翻得不好的去看后面的原文吧 ———————————————————————————————————————————————————————————— 问题 今天的网络多人游戏必须处理大量不同的消息.有标准的消息(创建玩家.删除玩家.聊天等等),也有游戏中特定的消息.所有这些消息都有它们自己的数据项,它们必须能够通过一个连接发送出去并在另一端重新组装.作为网络游戏开发者,你的工作就是梳理一切以便你的游戏能够以一种优雅的方式发送和接收消息. 在C++中最明显的做到这一点方式就是用类来表示不同的消息

如何监测耳机/麦克风设备插拔操作

没事的时候想起来做这么个功能,主要是想在插入耳机之后能自动调节到较小的音量,免得耳朵被震得难受. 在搜索过程中先搜到了CSDN论坛的一篇帖子<C#监测音频设备热插拔功能>(http://bbs.csdn.net/topics/390502788) 虽然没有靠这篇帖子解决问题,但是帖子还是指出了道路,就是用Windows Vista之后提供的新Core Audio API来侦测 在这里我是用NAudio(http://naudio.codeplex.com/)这个开源库中CoreAudio的实现