我知道如何列出可用的串行端口,但是每次连接我的 Arduino 时,谁能找到正确的 COM 端口?COM 端口应该像这样打印MessageBox.Show(COMport);
我想在 Visual C# 应用程序中读/写 Arduino 数据。
[这对我不起作用]
我知道如何列出可用的串行端口,但是每次连接我的 Arduino 时,谁能找到正确的 COM 端口?COM 端口应该像这样打印MessageBox.Show(COMport);
我想在 Visual C# 应用程序中读/写 Arduino 数据。
[这对我不起作用]
打开设备管理器,展开“端口(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);
}
}
您可以对 Arduino 进行编程以通过串行发送特定模式,并且您的 C# 监听所有 COM 端口,寻找特定模式。
详细来说,com 端口命名为:COM1、COM2、COM3 等。
因此,编写一个打开每个 COMn 的循环,如果打开成功,则发送一个串行流,看看您是否得到正确的响应。
最后,在 C 中,您可以sprintf(port_name, "COM%d", port_nr);
生成打开的端口名称。