C#如何获取电脑中的端口号和硬件信息

ops/2025/1/20 19:44:26/

我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。

图片

那么如果我们使用C#编写软件时候,如何获取到串口的硬件信息呢?

思路就是通过读取设备管理器里的条目来实现,我这里给大家封装好了一个通用的方法。

        /// <summary>/// 获取可用端口号/// </summary>/// <param name="usefullName">是否使用完全名称</param>/// <returns>端口号集合</returns>public static string[] GetPortNames(bool usefullName = false){List<string> result = new List<string>();try{//搜索设备管理器中的所有条目using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PnPEntity")){var hardInfos = searcher.Get();foreach (var hardInfo in hardInfos){if (hardInfo.Properties["Name"].Value != null){string name = hardInfo.Properties["Name"].Value.ToString();if (name.Contains("(COM") && name.EndsWith(")")){if (usefullName){result.Add(name);}else{//获取端口号string port = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1);//如果是虚拟串口if (name.Contains("->")){result.Add(port.Split(new string[] { "->"}, StringSplitOptions.None)[0]);}//如果不是虚拟串口else{result.Add(port);}}}}}}}catch{result = new List<string>();}return result.ToArray();}

如果我们需要获取带硬件信息,那么usefullname传入True即可。

string[] ports = GetPortNames(true);
foreach (var item in ports)            
{                Console.WriteLine(item);            
}

图片

如果我们不需要获取带硬件信息的端口号集合,那么usefullname传入False,默认参数是False,不填的话,就是False。

图片


http://www.ppmy.cn/ops/151742.html

相关文章

仿 RabbitMQ 的消息队列1(实战项目)

一&#xff0c;消息队列的背景知识 我们以前学过阻塞队列&#xff0c;其实阻塞队列和消息队列的原理差不多。 在实际的后端开发中, 尤其是分布式系统⾥, 跨主机之间使⽤⽣产者消费者模型, 也是⾮常普遍的需求. 因此, 我们通常会把阻塞队列, 封装成⼀个独⽴的服务器程序, 并且赋…

【数据分享】1929-2024年全球站点的逐日平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01;本次我们为大家带来的就是具体到气象监…

[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()

目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget&#xff08;一般情况下默认会自带&#xff09; 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…

Spring Boot 整合 Redis:提升应用性能的利器

Redis (Remote Dictionary Server) 是一款高性能的键值对存储数据库&#xff0c;它以内存存储为主&#xff0c;具有速度快、支持丰富的数据类型等特点&#xff0c;被广泛应用于缓存、会话管理、排行榜等场景。 Spring Boot 提供了对 Redis 的良好支持&#xff0c;使得我们可以轻…

yt-dlp脚本下载音频可选设置代理

import yt_dlp# 配置:是否使用代理 use_proxy = True # 设置为 False 可关闭代理# 代理地址 proxy_url = socks5://127.0.0.1:1089URLS = [https://www.bilibili.com/video/BV1WTktYcEcQ/?spm_id_from=333.1007.tianma.6-2-20.click&vd_source=dcb58f8fe1faf749f438620b…

《多模态语言模型的局限性与生态系统发展现状分析》

1. 多模态语言模型的主要局限性 推理能力问题 复杂推理任务表现不稳定图像理解深度差异大推理过程存在逻辑跳跃 技术实现挑战 视觉特征与语言理解的融合不完善训练数据和方法有限跨模态理解算法需优化 2. 生态系统的不成熟表现 评测标准问题 缺乏标准化评测框架性能评估方法…

复杂查询优化:避免 SQL 查询中的 N+1 查询问题

在 SQL 查询优化中&#xff0c;N1 查询问题是一个常见的性能问题&#xff0c;特别是在关系型数据库中。当你的查询不当时&#xff0c;可能会导致对数据库进行大量的额外查询&#xff0c;造成不必要的性能损耗。 什么是 N1 查询问题&#xff1f; N1 查询问题通常出现在一对多或…

T-SQL语言的数据库交互

T-SQL语言的数据库交互 引言 随着信息技术的不断发展&#xff0c;数据库在各个行业中扮演着越来越重要的角色。数据库的有效管理和优化对于企业的数据安全、效率提升和决策支持至关重要。T-SQL&#xff08;Transact-SQL&#xff09;作为微软SQL Server的重要扩展语言&#xf…