1

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

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

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

4

2 回答 2

0

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

于 2013-04-24T00:07:58.853 回答
0

根据这篇文章,你可以做到这一点的一种方法是查看HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

  1. 其中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services有几个相关的子键:usbaudio, usbccgb, usbehci, usbprint,usbscan等等。Arduino 可能会出现在usbccgb,中usbehci,但老实说,我不确定。
  2. 在这些键中,您正在查找名称为数字的值,例如0,1等。
  3. 值为设备ID

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

于 2013-04-24T18:51:12.290 回答