如何自动检测Arduino COM端口? [英] How to auto-detect Arduino COM port?

查看:46
本文介绍了如何自动检测Arduino COM端口?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm using an Arduino with the Firmata library for communication to a C# application, and I want to eliminate a COM port configuration component since it can change from machine to machine...

是否可以:

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

推荐答案

这段代码在这方面表现得非常好(返回 COM 端口字符串,即COM12",如果检测到 Arduino):

This little bit of code has performed very well for this (returns the COM port string, i.e. "COM12" if Arduino is detected):

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

这篇关于如何自动检测Arduino COM端口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆