winform 获取可用的串口(包括串口名称)

2023-12-27 22:04:56

SerialPort.GetPortNames() 也可以获取可用的串口,但是只有COM1、COM2?这种,下面的代码是另一种获取串口的方式,可以获取到驱动名称之类的设备名

using System;
using System.Collections.Generic;
using System.Management;
using System.Text.RegularExpressions;

namespace Example
{
    internal class Example
    {
        public static List<string> GetComList()
        {
            List<string> list = new List<string>();
            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PnPEntity"))
            using(ManagementObjectCollection.ManagementObjectEnumerator enumerator = searcher.Get().GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    ManagementBaseObject current = enumerator.Current;
                    if (current.Properties["Name"].Value != null)
                    {
                        string text = current.Properties["Name"].Value.ToString();
                        Match m = Regex.Match(text, @"COM\d+");
                        if (m.Success)
                        {
                            Console.WriteLine(new string('*', 100));
                            //获取的是这样子的:通信端口 (COM1)
                            //我们给转成这样子:COM1 通信端口
                            string item = $"{m.Value} {text.Substring(0, m.Index - 1)}".Trim();
                            Console.WriteLine(item);
                            list.Add(item);
                        }
                    }
                }
                return list;
            }
        }

    }
}

文章来源:https://blog.csdn.net/jjf19891208/article/details/135249422
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。