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

news/2025/1/21 6:24:46/

我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的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/news/1564874.html

相关文章

第二章:CSS的复合选择器

目录 一、并集选择器 二、交集选择器 三、后代选择器 四、子代选择器 五、兄弟选择器 六、属性选择器 七、伪类选择器 1.动态伪类 2.结构伪类 3.否定伪类 4.UI伪类 5.目标伪类 6.语言伪类 八、伪元素选择器 九、选择器的优先级 十、总结 一、并集选择器 同时选…

分类问题(二元,多元逻辑回归,费歇尔判别分析)spss实操

分类模型&#xff1a; 二分类和多分类&#xff1a; 对于二分类模型 &#xff0c;我们将介绍逻辑回归和Fisher线性判别分析两种分类算法; 对于多分类模型&#xff0c;我们将简单介绍Spss中的多分类线性判别分析和多分类逻辑回归的操作步骤 二分类: 基于广义线性模型&#x…

iOS 性能优化:实战案例分享

摘要&#xff1a; 本文将深入探讨 iOS 性能优化的重要性&#xff0c;并通过一系列实际开发案例&#xff0c;展示如何解决常见的性能问题&#xff0c;包括内存管理、CPU 性能、网络性能、UI 性能和启动性能等方面的优化&#xff0c;帮助 iOS 开发者打造更流畅、高效的应用程序。…

RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式

视频从采集到编码再到线程获取编码后的数据&#xff0c;已经全部说完。接下来继续来说应该比较重要的&#xff0c;和视频相关的。就是码率。 视频码率及其码率控制方式 一、什么是码率&#xff1f; 视频码率是指在单位时间内传输的视频数据量&#xff0c;通常以 kbps&#x…

初识go语言之指针用法

一、环境准备 安装go语言编译环境&#xff0c;官网地址&#xff1a;https://go.dev/dl/ 或者 https://golang.google.cn/dl/ 点击下载按提示安装即可 vscode 安装go语言扩展 测试 package mainimport "fmt"func main() {fmt.Println("Hello, World!") …

Spark 之 Aggregate

Aggregate 参考链接: https://github.com/PZXWHU/SparkSQL-Kernel-Profiling完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式( groupingExpressions )。 聚合查询还支持 OLAP 场景下的多…

uni-app 中使用微信小程序第三方 SDK 及资源汇总

首先在高德开放平台&#xff0c;注册账号并且申请相关的 key 等信息&#xff1b; 然后下载它的微信小程序版 SDK&#xff1a;微信小程序 SDK。 然后填写app包名&#xff0c;申请原生sdk的appkey信息&#xff0c;但不需要下载原生sdk。注意&#xff1a;App侧在Android中使用定位…

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显&#xff0c;发现可以打SSTI 本地起一个服务&#xff0c;折半查找fuzz黑名单&#xff0c;不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…