【问题标题】:Auto detect Arduino in C++ (Windows)在 C++ (Windows) 中自动检测 Arduino
【发布时间】:2013-04-23 17:35:04
【问题描述】:

我正在尝试编写一个 C++ 程序,它可以自动检测所有连接的 arduino 的 COM 端口号。

我已经发现我可以在HKLM/HARDWARE/DEVICEMAP/SERIALCOMM 中获得所有可用 COM 端口设备的列表,但没有关于正在那里监听的设备的信息。有没有办法获得例如 GUID 或设备描述来检测哪个是 Arduino?我看到的唯一另一种方法是尝试向每个端口发送一些东西并监听先前定义的响应。 谢谢你的回复:)

编辑: 我想我应该提到我使用 g++ 作为编译器和 MinGW。 syam 已将这个How to auto-detect Arduino COM port? 链接到我,它似乎实现了我想要的,但它是用 C# 编写的,并且在我需要纯 Win32 时使用 .Net 特定的 API。

【问题讨论】:

    标签: c++ windows usb arduino usbserial


    【解决方案1】:

    串行端口设备不是即插即用,因此您无法获取设备描述或 GUID。所以使用串口技术自动检测 Arduino 是不可能的。

    【讨论】:

    • 但是 arduino 使用了一个 usb2serial 适配器,它显示在硬件管理器中(包括 COM 端口)
    • 所以你的问题被错误标记了。可能是 USB 而不是串口/com。
    【解决方案2】:

    根据this article,您可以通过查看HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

    1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services中有几个相关的子键:usbaudiousbccgbusbehciusbprintusbscan等等。 Arduino 可能会在usbccgbusbehci,但老实说,我不确定。
    2. 在那些键中,您正在寻找名称为数字的值,例如01 等。
    3. 值为设备ID

    您可以从windows设备管理器中找到任何设备的设备ID:右键单击设备,选择属性,然后选择详细信息选项卡。显然,您可以以编程方式打开必要的注册表项,以查找 Arduino 设备的设备 ID。对于您的问题,这种方法的问题在于您的 Arduino 检测器必须针对您计划使用的每个 Arduino 进行预编程。

    【讨论】:

    • 谢谢,我会试试这个。对 GUID 进行预编程应该没问题,因为我为学校项目执行此操作,并且可以使用相同的设备。
    • 迂腐提示:从技术上讲,它不是 GUID,但是,很好,应该可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2016-03-13
    • 2012-01-08
    • 2012-01-29
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    相关资源
    最近更新 更多