c# - 如何自动检测Arduino COM端口?

标签 c# arduino

我正在使用带有 Firmata 库的 Arduino 与 C# 应用程序进行通信,我想消除 COM 端口配置组件,因为它可以在机器之间更改...

是否可以:

  1. 枚举系统中的 COM 端口列表? (在我的谷歌搜索中,我看到了一些相当丑陋的 Win32 API 代码,希望现在可能有一个更简洁的版本)
  2. 自动检测哪些 COM 端口连接到 Arduino?

最佳答案

这一小段代码对此执行得非常好(返回 COM 端口字符串,即如果检测到 Arduino,则返回“COM12”):

private string AutodetectArduinoPort()
        {
            ManagementScope connectionScope = new ManagementScope();
            SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery);

            try
            {
                foreach (ManagementObject item in searcher.Get())
                {
                    string desc = item["Description"].ToString();
                    string deviceId = item["DeviceID"].ToString();

                    if (desc.Contains("Arduino"))
                    {
                        return deviceId;
                    }
                }
            }
            catch (ManagementException e)
            {
                /* Do Nothing */
            }

            return null;
        }

关于c# - 如何自动检测Arduino COM端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293889/

相关文章:

c# - .NET Core Web应用程序启动类中的app.UseMigrationsEndPoint做什么

c# - 有没有办法公开强类型资源文件(而不是内部文件)?

c# - 如何在silverlight中设置图像的位置

Arduino Uno + WifiShield : Telnet Error "Connection Refused"

matlab - 如何在 MATLAB 中映射值的范围

c++ - Arduino代码没有正确添加数字

c# - 如何获取像 ReadOnlySpan 这样的 ref 结构的 sizeof?

c# - 运行种子方法转换为值类型 <type> 失败,因为物化值为 null

java - Arduino bat 传感器注册次数过多

javascript - 通过 MQTT 将图像从 Arduino 发送到 MOSCA 主机