本文主要是介绍97、windows检查串口端口号是否存在,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "stdbool.h"/****************************************
@function:windows端口检查是否存在
@param:port--端口号
@return:
@note:此函数不分辨串口是否已被打开使用
****************************************/
bool Windows_UART_PortCheck_driver(int port)
{HKEY hKey;//返回注册表项的句柄char Name[25] = {0};DWORD dwName = 0,dwSizeofPortName = 0,dwIndex = 0,Type = 0;unsigned char szPortName[25];long Status = ERROR_SUCCESS;int num = 0;bool flag = false;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM\\", 0, KEY_READ, &hKey) != ERROR_SUCCESS)return false;//打开注册表dwName = sizeof(Name);dwSizeofPortName = sizeof(szPortName);while((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA)){Status = RegEnumValue(hKey, dwIndex++, Name, &dwName, NULL, &Type, szPortName, &dwSizeofPortName); //列举注册表的值if((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA)){sscanf((const char*)szPortName,"COM%d",&num);if(num == port){flag = true;break;}}dwName = sizeof(Name); dwSizeofPortName = sizeof(szPortName); }RegCloseKey(hKey);//关闭注册表return flag;
}int main() {if(Windows_UART_PortCheck_driver(34)){printf("存在");}else printf("不存在");return 0;
}
如果没有tchar.h文件也可以删除此头文件,然后将DWORD 改为int
int dwName = 0,dwSizeofPortName = 0,dwIndex = 0,Type = 0;
然后就可以了
这篇关于97、windows检查串口端口号是否存在的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!