QQ登录

只需一步,快速开始

379上位机VC MFC通过注册表获取串口数量及串口号

[ 复制链接 ]

379上位机VC MFC通过注册表获取串口数量及串口号

379上位机VC MFC通过注册表获取串口数量及串口号

获取串口数量及串口号
功能展示
串口在我们工业控制领域中是极为常用的一种通讯方式,串口通讯前都得设置串口的端口号如COM1等,我们当前例程就实现系统全部串口的获取 ,效果如图,点击<获取全部串口>例程会读取注册表中的全部安装串口,并显示出来

要点提示
系统中串口的相关信息保存在子键HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM下,有时子键SERIALCOMM并未找到,程序也就无法打开子键,这是因为系统未安装任何的串口,插入一根USB转串口数据线,在串口驱动安装成功就会自动创建子键SERIALCOMM,并在子键下生成键值项;

实现功能
1.新建基于对话框的应用程序
2.添加列表控件,关联变量CListCtrl m_List;,添加按钮<获取全部串口>关联点击函数
void CGkbc8Dlg::OnGet()
{
if(!AllRegKeyValue(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM") )
MessageBox("未找到串口");
}
4.初始化控件,再添加上面的自定义函数
m_List.ModifyStyle(0,LVS_REPORT,NULL);
m_List.InsertColumn(0,"索引",LVCFMT_LEFT,90);
m_List.InsertColumn(1,"串口号",LVCFMT_LEFT,300);
BOOL CGkbc8Dlg::AllRegKeyValue(HKEY hRootKey, CString sSubKey)
{
HKEY hSubKey;
long lResult;
lResult = RegOpenKeyEx(hRootKey, sSubKey, 0, KEY_READ, &hSubKey);// 打开注册表
if(ERROR_SUCCESS != lResult)
return FALSE;
//<>
const UINT nSize = 256;
UINT nIndex = 0; //枚举索引
CString sTemp;
TCHAR Name[nSize] = {0}; // 键/值名称
DWORD NameSiz = nSize*sizeof(TCHAR);
DWORD Type = REG_SZ; // 值类型
TCHAR sData[nSize] = {0}; // 值数据
DWORD DataSiz = nSize*sizeof(TCHAR);
lResult = RegEnumValue(hSubKey,nIndex,Name,&NameSiz,0,&Type, (unsigned char *)sData, &DataSiz);
while (lResult == ERROR_SUCCESS)
{
sTemp.Format("%d",nIndex);
m_List.InsertItem(m_List.GetItemCount(), sTemp);//插入一行
m_List.SetItemText(m_List.GetItemCount()-1, 1, sData);
//<>
nIndex++;
NameSiz = nSize*sizeof(TCHAR);//必须重新赋值
DataSiz = nSize*sizeof(TCHAR);
lResult = RegEnumValue(hSubKey,nIndex,Name,&NameSiz,0,&Type, (unsigned char *)sData, &DataSiz);
}
RegCloseKey(hSubKey);
if(!nIndex)
return FALSE;
return TRUE;
}

我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:379.上位机VC MFC通过注册表获取串口数量及串口号.zip 
文件大小:131.21 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索