通过使用C#更改端口值来获取特定的串行端口信息

时间:2013-03-22 07:21:03

标签: c# serial-port

我在表单加载事件中编写了以下代码。当表单被加载时,可用的串行端口被添加到组合框中。

 String[] ports = SerialPort.GetPortNames();    
private void Form1_Load(object sender, EventArgs e)
    {
        _serialPort = new SerialPort();
        foreach (string port in ports)
          {
            cbox.Items.Add(port);
          }
    }

在下一步中,在combobox selectedindex_changed事件中,当更改端口时,端口详细信息将在多行文本框中更新。

 private void cbox_SelectedIndexChanged(object sender, EventArgs e)
      {
          using (var searcher = new ManagementObjectSearcher("SELECT * FROM WIN32_SerialPort"))
          {
              var prts = searcher.Get().Cast<ManagementBaseObject>().ToList();
              var tList = (from n in ports
                           join p in prts on n equals p["DeviceID"].ToString()
                           select n + " - " + p["Caption"]).ToList();
              foreach (string s in tList)
              {
               mtxt.AppendText(s);  // multiline textbox
              }
          }
      }

例如: 在此程序中,端口被添加到(COM3到comX)的组合框中。 但我的问题是无论我选择哪个端口,它只返回组合框中第一个端口的详细信息(即只返回COM3的详细信息).Pls任何一个帮助我获取我在组合框中选择的端口的详细信息。

1 个答案:

答案 0 :(得分:0)

关注此处的讨论

http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/c236cac4-a954-4a70-882d-bc20e2cc6e81

阅读

中的以下内容
  

我们无法通过SerialPort类型获取信息。我不知道   为什么在您的应用程序中需要此信息。但是,有一个solved   线程与您的问题相同。你可以查看代码   在那里,看看它是否可以帮到你。