前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++得到系统活动、可用的串口及名称的两种方法

C++得到系统活动、可用的串口及名称的两种方法

作者头像
战神伽罗
发布2021-04-14 14:32:47
1.8K2
发布2021-04-14 14:32:47
举报
文章被收录于专栏:Eureka的技术时光轴

CreateFile方法:

void GetComList_256(CComboBox * CCombox)//获取可用com口支持到256个

{

CString strCom,strComOpen;

int nCom = 0;

int count = 0;

HANDLE hCom;

CCombox->ResetContent();

do

{

nCom++;

strCom.Format("COM%d", nCom);

strComOpen.Format("\\\\.\\COM%d", nCom);

hCom = CreateFile(strComOpen, GENERIC_READ | GENERIC_WRITE, 0, NULL,

OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);

if(INVALID_HANDLE_VALUE == hCom )

{

DWORD error=::GetLastError();//取得错误信息

}

else

{

CCombox->AddString( strCom );

count++;

}

CloseHandle(hCom);

} while(nCom<256);

CCombox->SetCurSel(0);

}

*******************************************************************

读取注册表方法:

int GetComList_Reg( CComboBox * CCombox )

{

HKEY hkey;

int result;

int i = 0;

CString strComName;//串口名称

CString strDrName;//串口详细名称

result = RegOpenKeyEx( HKEY_LOCAL_MACHINE,

_T( "Hardware\\DeviceMap\\SerialComm" ),

NULL,

KEY_READ,

&hkey );

if( ERROR_SUCCESS == result ) // 打开串口注册表

{

TCHAR portName[ 0x100 ], commName[ 0x100 ];

DWORD dwLong, dwSize;

CCombox->ResetContent();

do

{

dwSize = sizeof( portName ) / sizeof( TCHAR );

dwLong = dwSize;

result = RegEnumValue( hkey, i, portName, &dwLong, NULL, NULL, ( LPBYTE )commName, &dwSize );

if( ERROR_NO_MORE_ITEMS == result )

{

// 枚举串口

break; // commName就是串口名字"COM2"

}

strComName=commName;

strDrName = portName;

// 从右往左边开始查找第一个'\\',获取左边字符串的长度

int len = strDrName.ReverseFind( '\\');

// 获取'\\'左边的字符串

CString strFilePath = strDrName.Left( len+1 );

// 获取'\\'右边的字符串

CString fileName = strDrName.Right(strDrName.GetLength() - len-1);

fileName = strComName + _T(": ")+fileName;

CCombox->AddString(fileName);

i++;

} while ( 1 );

RegCloseKey( hkey );

}

CCombox->SetCurSel(0);

return i;

}

读取后还可以加入到组合框中,可以根据需要加入到数据中

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档