MFC下边自动寻找串口

2023-11-03 09:38
文章标签 自动 串口 mfc 寻找 下边

本文主要是介绍MFC下边自动寻找串口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘自:http://blog.csdn.net/itas109/article/details/18359295

程序:http://blog.csdn.net/itas109/article/details/18359295

serial类里边的两个函数

void CSerialPort::Hkey2ComboBox(CComboBox& m_PortNO)
{HKEY hTestKey;bool Flag = FALSE;///仅是XP系统的注册表位置,其他系统根据实际情况做修改if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hTestKey) ){QueryKey(hTestKey);}RegCloseKey(hTestKey);int i = 0;m_PortNO.ResetContent();///刷新时,清空下拉列表内容while(i < MaxSerialPortNum && -1 != m_nComArray[i]){CString szCom; szCom.Format(_T("COM%d"), m_nComArray[i]);m_PortNO.InsertString(i, szCom.GetBuffer(5));++i;Flag = TRUE;if (Flag)///把第一个发现的串口设为下拉列表的默认值m_PortNO.SetCurSel(0);}}
///查询注册表的串口号,将值存于数组中
///本代码参考于mingojiang的获取串口逻辑名代码
//
void CSerialPort::QueryKey(HKEY hKey) 
{ #define MAX_KEY_LENGTH 255#define MAX_VALUE_NAME 16383//	TCHAR    achKey[MAX_KEY_LENGTH];   // buffer for subkey name//	DWORD    cbName;                   // size of name string TCHAR    achClass[MAX_PATH] = TEXT("");  // buffer for class name DWORD    cchClassName = MAX_PATH;  // size of class string DWORD    cSubKeys=0;               // number of subkeys DWORD    cbMaxSubKey;              // longest subkey size DWORD    cchMaxClass;              // longest class string DWORD    cValues;              // number of values for key DWORD    cchMaxValue;          // longest value name DWORD    cbMaxValueData;       // longest value data DWORD    cbSecurityDescriptor; // size of security descriptor FILETIME ftLastWriteTime;      // last write time DWORD i, retCode; TCHAR  achValue[MAX_VALUE_NAME]; DWORD cchValue = MAX_VALUE_NAME; // Get the class name and the value count. retCode = RegQueryInfoKey(hKey,                    // key handle achClass,                // buffer for class name &cchClassName,           // size of class string NULL,                    // reserved &cSubKeys,               // number of subkeys &cbMaxSubKey,            // longest subkey size &cchMaxClass,            // longest class string &cValues,                // number of values for this key &cchMaxValue,            // longest value name &cbMaxValueData,         // longest value data &cbSecurityDescriptor,   // security descriptor &ftLastWriteTime);       // last write time for (i=0;i<20;i++)///存放串口号的数组初始化{m_nComArray[i] = -1;}// Enumerate the key values. if (cValues > 0) {for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++) { cchValue = MAX_VALUE_NAME;  achValue[0] = '\0'; if (ERROR_SUCCESS == RegEnumValue(hKey, i, achValue, &cchValue, NULL, NULL, NULL, NULL))  { CString szName(achValue);
//				if (-1 != szName.Find(_T("Serial")) || -1 != szName.Find(_T("VCom")) ){if (-1 != szName.Find(_T("Serial")) || -1 != szName.Find(_T("VCom")) || -1 != szName.Find(_T("Silabser"))){BYTE strDSName[10]; memset(strDSName, 0, 10);DWORD nValueType = 0, nBuffLen = 10;if (ERROR_SUCCESS == RegQueryValueEx(hKey, (LPCTSTR)achValue, NULL, &nValueType, strDSName, &nBuffLen)){int nIndex = -1;while(++nIndex < MaxSerialPortNum){if (-1 == m_nComArray[nIndex]) {m_nComArray[nIndex] = atoi((char*)(strDSName + 3));break;}}}}} }}else{AfxMessageBox(_T("本机没有串口....."));}}






这篇关于MFC下边自动寻找串口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/337273

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新