Я думаю, что WMI - это то, что нужно, так как его довольно легко запустить, и у него минимальный код. Это избавляет вас от необходимости копаться в реестре и дает некоторую гарантию того, что в будущем это сработает для более общих ситуаций.
Вы можете установить все необходимое с pip install pypiwin32 WMI
, и оно работает "из коробки".
Код
import wmi
query = "SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%(COM%)'"
coms = wmi.WMI().query(query)
for com in coms:
print(com.Name)
Выход
Communications Port (COM1)
mbed Serial Port (COM3)
mbed Serial Port (COM5)
Я предполагаю, что ваш последовательный порт является своего рода Plug 'n Play, так что это должно работать нормально. По какой-то причине Win32_SerialPort
работает не для всех портов.