MissionPlanner.Comms.SerialPort.GetPortNames C# (CSharp) Method

GetPortNames() public static method

public static GetPortNames ( ) : string[]
return string[]
        public new static string[] GetPortNames()
        {
            // prevent hammering
            lock (locker)
            {
                List<string> allPorts = new List<string>();

                if (Directory.Exists("/dev/"))
                {
                    // cleanup now
                    GC.Collect();
                    // mono is failing in here on linux "too many open files"
                    try
                    {
                        if (Directory.Exists("/dev/serial/by-id/"))
                            allPorts.AddRange(Directory.GetFiles("/dev/serial/by-id/", "*"));
                    }
                    catch { }
                    try
                    {
                        allPorts.AddRange(Directory.GetFiles("/dev/", "ttyACM*"));
                    }
                    catch { }
                    try
                    {
                        allPorts.AddRange(Directory.GetFiles("/dev/", "ttyUSB*"));
                    }
                    catch { }
                    try
                    {
                        allPorts.AddRange(Directory.GetFiles("/dev/", "rfcomm*"));
                    }
                    catch { }
                    try
                    {
                        allPorts.AddRange(Directory.GetFiles("/dev/", "*usb*"));
                    }
                    catch { }
                }

                string[] ports = null;

                try
                {
                    ports = System.IO.Ports.SerialPort.GetPortNames()
                    .Select(p => p.TrimEnd())
                    .Select(FixBlueToothPortNameBug)
                    .ToArray();
                }
                catch { }

                if (ports != null)
                    allPorts.AddRange(ports);

                return allPorts.ToArray();
            }
        }