如何找到可用的COM端口?

RV.*_*RV. 14 c# serial-port

如何在我的电脑中找到可用的COM端口?我正在使用框架v1.1.是否可以找到所有COM端口?如果可能的话,帮我解决问题.

Van*_*uan 30

Framework v1.1 AFAIK不允许您这样做.

在2.0中有一个静态函数

SerialPort.GetPortNames()
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.getportnames.aspx


Jua*_*nma 11

正如其他人建议的那样,您可以使用WMI.您可以在CodeProject中找到示例

try
{
    ManagementObjectSearcher searcher =
        new ManagementObjectSearcher("root\\WMI",
        "SELECT * FROM MSSerial_PortName");

    foreach (ManagementObject queryObj in searcher.Get())
    {
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("MSSerial_PortName instance");
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]);

        Console.WriteLine("-----------------------------------");
        Console.WriteLine("MSSerial_PortName instance");
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("PortName: {0}", queryObj["PortName"]);

        //If the serial port's instance name contains USB 
        //it must be a USB to serial device
        if (queryObj["InstanceName"].ToString().Contains("USB"))
        {
            Console.WriteLine(queryObj["PortName"] + " 
            is a USB to SERIAL adapter/converter");
        }
    }
}
catch (ManagementException e)
{
    Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
} 
Run Code Online (Sandbox Code Playgroud)

  • 此代码在.net Framework 4.0上的"foreach"行上产生错误. (4认同)
  • 我在.NET 4.5上遇到"拒绝访问"错误 (4认同)

Ste*_*eef 8

可以HKEY_LOCAL_MACHINE\hardware\devicemap\serialcomm在注册表中的键的值处找到可用的串行端口.