我已经将我的手机连接到我的电脑并使用了这个,
string[] lPorts = System.IO.Ports.SerialPort.GetPortNames();
结果是一组端口名称
"COM4"
"COM3"
"COM1"
"COM7"
"COM6"
现在,如何在c#中找到当前使用哪个串口/我的手机连接到哪个端口?
显然,您需要知道用于通信的串行协议。只需向每个端口发送一个已知命令并检查预期的响应。没有设备的端口将超时/抛出 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();
}
}