0

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

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

[对我不起作用]

4

3 回答 3

2

打开设备管理器,展开“端口(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<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);
        }
    }
于 2013-09-02T23:50:37.207 回答
1

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

于 2013-09-02T22:42:00.650 回答
-2

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

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

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

于 2013-09-03T16:48:24.020 回答