nanorobot 5 28 ноября, 2016 Опубликовано 28 ноября, 2016 (изменено) · Жалоба Железяка на STM32F407 обменивается по USB(виртуальный СОМ порт) c РС программой(Windows, Borland C++ builder). Программа идентифицирует железяку опрашивая все наличествующие в системе СОМ порты. Заранее неизвестно сколько портов и каких может быть в системе. Можно ли используя API или что либо еще, определить тип СОМ порта - виртуальный, или "железный"? Было бы идеально, если б можно было получить строку из описания порта в системе, например "PCI Serial Port(COM3)", или "STM32 Virtual Com Port (COM6) " Изменено 28 ноября, 2016 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rat 0 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба Железяка на STM32F407 обменивается по USB(виртуальный СОМ порт) c РС программой(Windows, Borland C++ builder). Программа идентифицирует железяку опрашивая все наличествующие в системе СОМ порты. Заранее неизвестно сколько портов и каких может быть в системе. Можно ли используя API или что либо еще, определить тип СОМ порта - виртуальный, или "железный"? Было бы идеально, если б можно было получить строку из описания порта в системе, например "PCI Serial Port(COM3)", или "STM32 Virtual Com Port (COM6) " В питоне такая возможность есть средствами serial.tools.list_ports про борланд не подскажу, но, имхо, наверняка должна быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба Самфй простой способ - посмотреть названия ключей в HKLM/HARDWARE/DEVICEMAP/SERIALCOMM. Если не устроит, гуглите setupapi. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 5 28 ноября, 2016 Опубликовано 28 ноября, 2016 (изменено) · Жалоба Самфй простой способ - посмотреть названия ключей в HKLM/HARDWARE/DEVICEMAP/SERIALCOMM. Если не устроит, гуглите setupapi. нашел вот такой пример с использованием setup.api HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; SP_DEVICE_INTERFACE_DATA DeviceInterfaceData; char dev_name[1024]; DWORD i; GUID GUID_DEVCLASS_PORTS = {0x4d36e978, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18}; hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_PORTS, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); if (hDevInfo == INVALID_HANDLE_VALUE) {}// return 0; DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); for(i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++) { SetupDiGetDeviceRegistryPropertyA(hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, NULL, (UCHAR*)dev_name, sizeof(dev_name), NULL); std::cout << dev_name << std::endl; } SetupDiDestroyDeviceInfoList(hDevInfo); все порты находит, кроме виртуального, того который и нужен .. хотя CLASS GUID соответствует: 4D36E978-E325-11CE-BFC1-08002BE10318 Изменено 28 ноября, 2016 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zlumd 0 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба Самфй простой способ - посмотреть названия ключей в HKLM/HARDWARE/DEVICEMAP/SERIALCOMM. Если не устроит, гуглите setupapi.Не надо так делать. Начиная с Windows7 это работает только под учетной записью администратора. нашел вот такой пример с использованием setup.api Здесь этот код нашёл? Чуть выше там нормальный рабочий код, который все порты находит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mazay 0 13 февраля, 2017 Опубликовано 13 февраля, 2017 · Жалоба все порты находит, кроме виртуального, того который и нужен .. хотя CLASS GUID соответствует: 4D36E978-E325-11CE-BFC1-08002BE10318 При вызове функции SetupDiGetClassDevs(&GUID_DEVCLASS_PORTS, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); надо убрать флаг DIGCF_DEVICEINTERFACE. Тогда будут получены и виртуальные порты использующие драйвер usbser.sys. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться