找到Arduino所连接的端口

我知道如何列出可用的串行端口,但每次连接Arduino时我能找到合适的COM端口吗? 应该像MessageBox.Show(COMport);一样打印COM端口MessageBox.Show(COMport);

我想在Visual C#应用程序中读/写Arduino数据。

[ 这对我不起作用]

您可以对Arduino进行编程以通过串行发送特定模式,并且C#监听所有COM端口,查找特定模式。

打开设备管理器,展开“端口(COM和LPT)”。 插入Arduino USB连接,一个新的COM端口显示名称Arduino UNO(COMxx)。 这是在我的机器上,因为我有一个Arduino UNO。

您可以使用WMI(Windows Management Instrumentation)找到此字符串。 我在一个类中使用下面的方法,并将COMports作为公共列表

 using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; using System.Windows; public void getCOMportsValues() { try { if (COMports.Count > 0) COMports.Clear(); // COMports is a List ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity"); foreach (ManagementObject queryObj in searcher.Get()) { string s = queryObj["Name"] as string; if (s.Contains("(COM")) COMports.Add(s); } } catch (ManagementException e) { MessageBox.Show("An error occurred while querying WMI data: " + e.Message); } } 

详细说明,com端口命名为:COM1,COM2,COM3等。

因此,编写一个打开每个COMn的循环,如果打开成功,则发送一个串行流并查看是否得到了正确的响应。

最后,在C中你可以sprintf(port_name, "COM%d", port_nr); 生成打开的端口名称。