当前位置: 代码网 > it编程>编程语言>C# > C#实现获取电脑中的端口号和硬件信息

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

2025年02月13日 C# 我要评论
我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的com1,而是带有硬件信息的。那么如果我们使用c#编写软件时候,如何获取到串口的硬件信息呢?思路就是通过读取设备管理器里的条目来实现,我

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

到此这篇关于c#实现获取电脑中的端口号和硬件信息的文章就介绍到这了,更多相关c#获取电脑信息内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com