int get_available_serial_port() //获取可用的串口
{
LPCTSTR strReg=TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM");//子项路径
HKEY hKey;
int i=0;
long ret=0;
DWORD dwIndex=0;
char name[100]={0};//名称
DWORD dwName=sizeof(name);
DWORD dwType;
UCHAR szPortName[100]={0}; //数据,比如"COM1"就存在这里
DWORD szPortNameOfBytes=sizeof(szPortName);
ret=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,strReg,0,KEY_READ,&hKey); //打开注册表,路径为HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM
if (ret!=ERROR_SUCCESS)
{
printf("注册表打开失败!");
return 0;
}
do
{
dwName=sizeof(name); //必须要加
szPortNameOfBytes=sizeof(szPortName); //必须要加
ret=RegEnumValueA(hKey,dwIndex++,name,&dwName,NULL,&dwType,szPortName,&szPortNameOfBytes);
if (ret==ERROR_SUCCESS||ret==ERROR_MORE_DATA)
{
printf("com:%s",szPortName);
i++;
}
} while (ret==ERROR_SUCCESS||ret==ERROR_MORE_DATA);
RegCloseKey(hKey);
return i;
}
windows获取可用串口
于 2022-07-25 13:51:03 首次发布