在c++ (Windows)中自动检测Arduino

Auto detect Arduino in C++ (Windows)

本文关键字:自动检测 Arduino Windows c++      更新时间:2023-10-16

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

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

编辑:我想我应该提到我使用g++作为编译器和MinGW。syam链接了我这个如何自动检测Arduino COM端口?它似乎实现了我想要的,但是用c#编写的,当我需要纯Win32时使用。net特定的api。

串口设备不是Plug N Play,因此无法获得设备描述和GUID。因此,使用串口技术自动检测Arduino是不可能的。

根据这篇文章,一种方法是查看HKEY_LOCAL_MACHINESystemCurrentControlSetServices:

  1. HKEY_LOCAL_MACHINESystemCurrentControlSetServices中有几个相关的子键:usbaudiousbccgbusbehciusbprintusbscan等。Arduino可能会在usbccgb, usbehci,但老实说,我不确定。
  2. 在这些键的内部,你正在寻找的值的名称是数字,如0, 1等。
  3. 设备ID

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