[英]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();
}
SerialPort.GetPortNames()方法是SerialPort的静态方法。您确定它们之间的通信具有流控制吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.