查找Arduino连接的端口

本文关键字:连接 Arduino 查找 | 更新日期: 2023-09-27 18:29:54

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

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

[这对我不起作用]

查找Arduino连接的端口

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

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

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<string>
            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);
        }
    }

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

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

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

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