C# C如何检查COM端口中是否连接了某些设备?

C# C如何检查COM端口中是否连接了某些设备?,c#,forms,port,C#,Forms,Port,我想做一个程序,当点击一个按钮时,检测某些设备是否通过devicename连接到COM端口。例如,如果设备已连接,并且在设备管理器中显示华为移动连接-3G PC UI接口COM16,则在消息框中告知设备是否已连接 我有一个代码,但它只显示可用的COM端口 private void button1_Click(object sender, EventArgs e) { string[] ports = SerialPort.GetPortNames();

我想做一个程序,当点击一个按钮时,检测某些设备是否通过devicename连接到COM端口。例如,如果设备已连接,并且在设备管理器中显示华为移动连接-3G PC UI接口COM16,则在消息框中告知设备是否已连接

我有一个代码,但它只显示可用的COM端口

private void button1_Click(object sender, EventArgs e)
    {
        string[] ports = SerialPort.GetPortNames();

        foreach (string port in ports)
        {
            richTextBox1.Text = port.ToString();
        }
    }

如果您可以在VisualStudio中使用System.Management nuget包。您可以使用以下代码来获取设备名称

 using (var devices = new ManagementObjectSearcher("SELECT * FROM WIN32_SerialPort"))
            {
                string[] portnames = SerialPort.GetPortNames();
                var ports = devices.Get().Cast<ManagementBaseObject>().ToList();
                var device_list = (from n in portnames
                    join p in ports on n equals p["DeviceID"].ToString()
                    select n + " - " + p["Caption"]).ToList();
此处设备列表包含连接到COM的所有设备的名称。您可以按设备名称搜索特定设备