public static string [] GetPortNames ()
{
int p = (int) Environment.OSVersion.Platform;
List<string> serial_ports = new List<string>();
// Are we on Unix?
if (p == 4 || p == 128 || p == 6) {
string[] ttys = Directory.GetFiles("/dev/", "tty*");
foreach (string dev in ttys) {
if (dev.StartsWith("/dev/ttyS") || dev.StartsWith("/dev/ttyUSB"))
serial_ports.Add(dev);
}
} else {
using (RegistryKey subkey = Registry.LocalMachine.OpenSubKey("HARDWARE\\DEVICEMAP\\SERIALCOMM"))
{
if (subkey != null) {
string[] names = subkey.GetValueNames();
foreach (string value in names) {
string port = subkey.GetValue(value, "").ToString();
if (port != "")
serial_ports.Add(port);
}
}
}
}
return serial_ports.ToArray();
}