如何找到当前使用的串口?

时间:2010-05-30 11:40:41

标签: c# detection ports

我已将手机连接到我的电脑并使用了这个,

string[] lPorts = System.IO.Ports.SerialPort.GetPortNames();

,结果是一个端口名称数组

"COM4"
"COM3"
"COM1"
"COM7"
"COM6"

现在,如何在c#中查找当前使用的串口/手机连接的端口?

1 个答案:

答案 0 :(得分:4)

显然,您需要知道用于通信的串行协议。只需向每个端口发送一个已知命令,然后检查预期的响应。没有设备的端口将超时/抛出IOException。

或者如果您不想通过代码执行此操作,您可以使用HyperTerminal或其他串行终端程序尝试相同的操作。

尝试以下内容: (请注意我是从内存中写的,并不保证这会编译/我的方法名称100%正确,但它给出了一般的想法。)

foreach(string portname in SerialPort.GetPortNames())
{
    // Use your connection settings - own baud rate etc
    SerialPort sp = new SerialPort(portname,4800, Parity.Odd, 8, StopBits.One); 
    try
    {
         sp.Open();
         sp.Write("Your known command to phone");
         Thread.Sleep(500);
         string received = sp.ReadLine();

         if(received == "expected response")
         {
              Console.WriteLine("Phone connected to: " + portname);
              break;
         }
    }
    catch(Exception)
    {
         Console.WriteLine("Phone NOT connected to: " + portname);
    }
    finally
    {
         sp.Close();
    }
}