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

devtools/2025/1/20 19:11:34/

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

相关文章

HTML5+Canvas实现的鼠标跟随自定义发光线条源码

源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷&#xff0c;在黑色的背景中&#xff0c;鼠标滑过即产生彩色变换的发光线条效果&#xff0c;且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…

Spring Web MVC综合案例

承接上篇文章——Spring Web MVC探秘&#xff0c;在了解Spring Web MVC背后的工作机制之后&#xff0c;我们接下来通过三个实战项目&#xff0c;来进一步巩固一下前面的知识。 一、计算器 效果展示&#xff1a;访问路径&#xff1a;http://127.0.0.1:8080/calc.html 前端代码&a…

Reactor 模式在 Edis、Nginx 和 Netty 中的应用与高性能网络模式解析

文章目录 参考文章Reactor 模式在 Edis、Nginx 和 Netty 中的应用与高性能网络模式解析一、Reactor 模式二、Redis 中的 Reactor 模式三、Nginx 中的 Reactor 模式四、Netty 中的 Reactor 模式五、Reactor 模式的优势六、总结 参考文章 redis&#xff0c;nginx&#xff0c;net…

掌握AutoGen:轻松控制多Agent框架中的代理对话退出(28/30)

一、AutoGen 框架初相识 在人工智能的蓬勃发展进程中&#xff0c;多智能体系统已然成为研究与应用的焦点领域。而 AutoGen 框架&#xff0c;作为多智能体对话领域的璀璨新星&#xff0c;正以其独特的魅力与强大的功能&#xff0c;引领着这一领域的创新潮流。它为开发者们搭建了…

【Redis】win10安装Redis

如果需要&#xff0c;先卸载 WIN10如何卸载redis_mob64ca12f831ae的技术博客_51CTO博客 下载 Releases tporadowski/redis (github.com) 我这里选择压缩包&#xff0c;需要手动解压、初始化、配置和安装服务 解压 启动 进入安装目录&#xff0c;这个cmd关闭即停止redis服…

[JavaScript] 深入理解流程控制结构

文章目录 1. **if-else 语句**基本语法&#xff1a;示例&#xff1a;扩展&#xff1a;else if 2. **switch-case 语句**基本语法&#xff1a;示例&#xff1a;注意事项&#xff1a; 3. **for 循环**基本语法&#xff1a;示例&#xff1a;扩展&#xff1a;for-in 和 for-of 4. *…

js高阶-监听对象的操作

控制与监听对象的行为 需求:监听对象中的属性设置与访问的过程 Object.defineProperty() 缺点 设计初衷是设置属性描述符,监听更加丰富的操作比如新增属性,删除操作是无能为力的 // 1.监听对象的某个属性的操作Object.defineProperty(obj,name,{set:function(val){console.…

结合帧级边界检测和深度伪造检测,定位部分伪造音频攻击中的篡改区域

Integrating frame-level boundary detection and deepfake detection for locating manipulated regions in partially spoofed audio forgery 摘要&#xff1a; 部分伪造音频是一种深度伪造的变体&#xff0c;它通过引入伪造或外部来源的善意音频片段来操纵音频语句&#xf…