如何找到使用c#发送消息后得到响应的串行端口?

如何找到使用c#发送消息后得到响应的串行端口?,c#,serial-port,C#,Serial Port,目的是找出哪个串行端口物理连接到另一台机器。我想搜索我的系统以找到可用的串行端口,并使用所有端口发送测试消息,然后等待响应。并获取连接到另一台机器的端口号,该端口号的任何端口都会收到响应。如何做??谢谢 使用System.IO.port public static void OnSerialDataReceived(object sender, SerialDataReceivedEventArgs args) {

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

使用System.IO.port

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();
}
使用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()方法返回所有可用串行端口的COM端口名数组。您可以迭代它并尝试打开它们。除故障外,端口可能已被其他程序打开

您不希望将某个内容发送到不希望发送的设备。使用DsrHolding属性是一种合理的测试,可以查看是否连接了已通电的设备


你的终极敌人将是波特率属性。您无法猜测正确的值。串行端口过于原始,无法支持即插即用式设备发现。避免使用不能可靠工作的东西,允许用户使用所需的设置配置程序。这是正常的做法。

SerialPort.GetPortNames()方法返回所有可用串行端口的COM端口名称数组。您可以迭代它并尝试打开它们。除故障外,端口可能已被其他程序打开

您不希望将某个内容发送到不希望发送的设备。使用DsrHolding属性是一种合理的测试,可以查看是否连接了已通电的设备


你的终极敌人将是波特率属性。您无法猜测正确的值。串行端口过于原始,无法支持即插即用式设备发现。避免使用不能可靠工作的东西,允许用户使用所需的设置配置程序。这是正常的做法。

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

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

请简要介绍一下这段代码。。因为我找不到任何能将数据发送到所有可用端口的东西。啊,这对一个端口有效。您需要使用
System.IO.Ports.SerialPort.GetPortNames
枚举端口名,并循环遍历每一个端口名。请简要介绍一下此代码。。因为我找不到任何能将数据发送到所有可用端口的东西。啊,这对一个端口有效。您需要使用
System.IO.Ports.SerialPort.GetPortNames
枚举端口名,并循环遍历每个端口。