Автоопределение Arduino в C ++ (Windows)

Я пытаюсь написать программу на C ++, которая автоматически определяет номера COM-портов всех подключенных arduinos.

Я уже обнаружил, что могу получить список всех доступных устройств COM-порта в HKLM/HARDWARE/DEVICEMAP/SERIALCOMM но нет никакой информации об устройстве, которое слушает там. Есть ли способ получить, например, GUID или описание устройства, чтобы определить, какой из них является Arduino? Единственный другой способ, который я вижу, это попытаться отправить что-то на каждый порт и прослушать ранее определенный ответ.
Спасибо за ваши ответы 🙂

РЕДАКТИРОВАТЬ:
Я думаю, что я должен упомянуть, что я использую g ++ в качестве компилятора и MinGW. Сям связал меня с этим Как автоматически определить COM-порт Arduino? который, кажется, достигает того, чего я хочу, но написан на C # и использует специфичные API .Net, когда мне нужен чистый Win32.

0

Решение

Устройства с последовательными портами не являются Plug N Play, поэтому вы не можете получить ни описание устройства, ни GUID. Поэтому невозможно автоматическое обнаружение Arduino с использованием технологии последовательного порта.

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. Значение — это идентификатор устройства

Вы можете узнать идентификатор устройства любого устройства в диспетчере устройств Windows: щелкните правой кнопкой мыши устройство, выберите свойства и перейдите на вкладку сведений. Очевидно, что вы можете открыть необходимый ключ реестра программным путем для поиска идентификатора устройства Arduino. Проблема с этим подходом для вашей проблемы заключается в том, что ваш детектор Arduino должен быть предварительно запрограммирован для каждого Arduino, который вы планируете использовать.

0

По вопросам рекламы [email protected]