检查COM端口的最快方法

时间:2013-05-15 10:33:05

标签: c# for-loop foreach serial-port

我需要在我的应用程序中检查可用的COM端口:

我创造了两种方法来做到这一点。

方法1:

public List<string> GetAllPortsForeach()
{
     var allPorts = new List<string>();
     foreach (String portName in System.IO.Ports.SerialPort.GetPortNames())
     {
           allPorts.Add(portName);
     }
     return allPorts;
} 

方法2:

public List<string> GetAllPortsForLoop()
{
      var allPorts = new List<string>();
       for (int i = 1; i <= 16; i++)
       {
           string comPortName = "COM" + Convert.ToString(i);
           SerialPort sp = new SerialPort(comPortName);
           try
           {
               sp.Open();
               allPorts.Add(comPortName);               
               sp.Close();
            }
            catch
            {
            }
        }
        return allPorts;
}

哪个最快?我应该使用哪个以及为什么?

1 个答案:

答案 0 :(得分:3)

第一个。它从注册表中读取所有可用的端口名称。更准确地说,如果您不打算在列表中添加任何自定义端口名称,则只需使用SerialPort.GetPortNames即可。

第二个:

  • 受端口号限制(端口名称可以是“COM20”,但系统中的端口总数将是,例如4)
  • 基于异常(这很丑陋且速度较慢)。