枚举所有串口,并自动识别硬件变动
来源:互联网 发布:静态sql和动态sql区别 编辑:程序博客网 时间:2024/04/29 19:00
实现枚举全部com port,和自动根据硬件变动更新com port
代码已上传CSDN : http://download.csdn.net/detail/xuleisdjn/9521866
枚举com port 通过读注册表实现。
根据硬件更新com port通过响应系统消息WM_DEVICECHANGE 实现。
注:在对话框的messages里面,我并没有找到这个消息,需要自己手动添加。
下面列出实现方法。
在界面上添加一个CComboBox控件,并为其添加一个控制变量m_combobox;
在头文件中添加
public: CComboBox m_combobox; afx_msg BOOL OnDeviceChange(UINT nEventType,DWORD_PTR dwData); void FindComPort();
在cpp的message map中添加
BEGIN_MESSAGE_MAP(CcomportDlg, CDialogEx) ON_WM_DEVICECHANGE()END_MESSAGE_MAP()
在cpp的DoDataExchange中添加
void CcomportDlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_combobox);}
在cpp中添加两个函数
BOOL CcomportDlg::OnDeviceChange(UINT nEventType, DWORD_PTR dwData) { if(nEventType==DBT_DEVNODES_CHANGED) FindComPort(); return TRUE; }
注:其中宏定义 DBT_DEVNODES_CHANGED 需要添加头文件 Dbt.h
void CcomportDlg::FindComPort() { HKEY hKey; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), NULL, KEY_READ, &hKey)==ERROR_SUCCESS) { TCHAR szPortName[256], szComName[256]; DWORD dwLong, dwSize; int nCount = 0; m_combobox.ResetContent(); while(true) { dwLong = dwSize = 256; if(RegEnumValue(hKey, nCount, szPortName, &dwLong, NULL, NULL, (PUCHAR)szComName, &dwSize)==ERROR_NO_MORE_ITEMS) break; m_combobox.InsertString(nCount, szComName); nCount++; } RegCloseKey(hKey); m_combobox.SetCurSel(0); } }
#include <Dbt.h>
在cpp的OnInitDialog 中添加FindcomPort();
// TODO: Add extra initialization here FindComPort();
经过vs2010的编译在win7系统下运行正常,可以自动获取电脑的所有com 口,当有硬件变动的时候(我用的测试终端,usb接口,会识别通信com口),会自动刷新com 口列表。
代码已上传CSDN : http://download.csdn.net/detail/xuleisdjn/9521866
0 0
- 枚举所有串口,并自动识别硬件变动
- C#枚举所有串口COM
- VC6.0 自动识别可用串口 添加至combox 并打开
- VC6.0 自动识别可用串口 添加至combox 并打开
- 通过查询注册表,枚举所有串口,并加载到下拉列表中
- 自动识别串口号
- MFC自动识别串口
- 串口注册表的自动识别
- 监视串口变动
- 使用VC6.0 自动识别可用串口 添加至combox 并打开。
- 串口DMPL指令刻字机自动识别图形轮廓并刻绘py
- 枚举系统中已经安装的所有硬件设备
- wins下串口 的自动识别
- 串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法
- 枚举串口
- 枚举串口
- 枚举串口
- 枚举串口
- swift+storyboard+UIImageview入门
- Android的onCreateOptionsMenu()创建菜单Menu详解
- android ExpandableListView实现
- matlab rem与mod 的区别
- 性能指标
- 枚举所有串口,并自动识别硬件变动
- 编译原理一些术语
- JasperReport和springMVC整合开发小结
- Java 引用分类:StrongReference、SoftReference、WeakReference、PhantomReference
- 工作中常用mysql语句
- MyBatis SQL xml处理小于号与大于号
- 信封装信问题
- Android Eclipse Ant 批量多渠道打包 总结!
- java反射技术详解