簡體   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