您的位置:首页 > 其它

自动识别串口号

2013-06-20 12:20 190 查看
自动识别当前插入电脑的设备的串口号

需要的头文件#include<Dbt.h>

1.添加消息映射:

ON_WM_DEVICECHANGE()

2.创建消息映射函数

afx_ mg BOOL OnDeviceChange(UINT nEventType ,DWORD_PTR dwData);

3.响应函数实现

OnDeviceChange(UINT nEventType ,DWORD_PTR dwData)

{

if(nEventType == DBT_DEVNODES_CHANGED)

FindPort();

}

4.声明 void FindPort();

5. 定义:

void CWaterStepDlg::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;

CString str;

while(TRUE)

{

dwLong = dwSize = 256;

if(RegEnumValue(hKey,nCount,szPortName,&dwLong,NULL,NULL,(PUCHAR)szComName,&dwSize) == ERROR_NO_MORE_ITEMS)

break;

nCount++;

str.Format(_T("%s"),szComName);

int len = str.GetLength();

str = str.Right(len-3);

ComX.push_back(atoi(str));

}

RegCloseKey(hKey);

}

else

{

AfxMessageBox(_T("注册表错误:无法打开有关的hKEY!"));

return;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: