[英]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.