/************************************************************************/
/* 串口自动识别 */
/************************************************************************/
//到注册表中自动查找到串口
HKEY hKey;
int rtn;
rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM", NULL, KEY_READ, &hKey);
if( rtn == ERROR_SUCCESS) // 打开串口注册表
{
int i=0;
char portName[256], commName[256];
DWORD dwLong,dwSize;
while(1)
{
dwSize = sizeof(portName);
dwLong = dwSize;
rtn = RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, (PUCHAR)commName, &dwSize );
if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口
break; // commName就是串口名字
i++;
}
RegCloseKey(hKey);
m_iPort = _ttoi(&commName[3]);
}
这样得到的m_iPort就为串口号,在实际操作当中"HARDWARE\\DEVICEMAP\\SERIALCOMM"为小写的话可能会导致注册表打不开,返回rtn的值为2(为0-normal)