我已将手机连接到我的电脑并使用了这个,
string[] lPorts = System.IO.Ports.SerialPort.GetPortNames();
,结果是一个端口名称数组
"COM4"
"COM3"
"COM1"
"COM7"
"COM6"
现在,如何在c#中查找当前使用的串口/手机连接的端口?
答案 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();
}
}