繁体   English   中英

使用C#发送MSG后,如何找到正在响应的串行端口?

[英]How to find the serial ports that are getting response after sending MSG using c#?

目的是找到哪个串行端口物理连接到另一台计算机。 我想搜索我的系统以找到可用的串行端口,并使用所有端口发送测试消息,然后等待响应。 并获取连接到另一台计算机的端口号。 怎么做?? 谢谢。

SerialPort.GetPortNames()方法返回所有可用串行端口的COM端口名称的数组。 您可以对其进行迭代,然后尝试对它们进行Open()。 预期会失败,该端口可能已被另一个程序打开。

您不想将某些内容发送到不需要的设备。 使用DsrHolding属性是一项合理的测试,以查看是否连接了已通电的设备。

您的最终敌人将是Baudrate属性。 您无法猜测正确的值。 串行端口太原始了,无法支持即插即用型设备发现。 避免使用无法可靠工作的东西,允许用户使用所需的设置来配置程序。 这是正常的做法。

使用System.IO.Ports。

public static void OnSerialDataReceived(object sender, 
                                        SerialDataReceivedEventArgs args)
{
  string data = ComPort.ReadExisting();
  Console.Write(data.Replace("\r", "\n"));
}


private static void InitializeComPort(string port, int baud)
{
  ComPort = new SerialPort(port, baud);
  // ComPort.PortName = port;
  // ComPort.BaudRate = baud;
  ComPort.Parity = Parity.None;
  ComPort.StopBits = StopBits.One;
  ComPort.DataBits = 8;
  ComPort.Handshake = Handshake.None;
  ComPort.DataReceived += OnSerialDataReceived;
  ComPort.Open();
}

Mark Michaelis博客上的更多内容

SerialPort.GetPortNames()方法是SerialPort的静态方法。您确定它们之间的通信具有流控制吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM