Вопрос или проблема
Я знаю, что мы можем узнать это через Диспетчер устройств в разделе “Порты”. Но я хочу получить эту информацию через командную строку, чтобы включить ее в свой скрипт на Python. Я посмотрел на такие инструменты, как WMI и Devcon. Devcon мог перечислить подключенные USB-устройства, но не указывать, к какому COM-порту подключено устройство. Кто-нибудь знает, как это сделать?
Если это поможет, устройство, которое я пытаюсь найти, – это USB Serial Converter.
DEVCON Findall =USB
USB\VID_0403&PID_6001\AH02JYRN : USB Serial Converter
Заранее спасибо!
Я нашел решение. Вы можете использовать devcon.exe и
devcon.exe FindAll =Ports
это даст вам точные данные, которые будут отображены в Диспетчере устройств в разделе “Порты” –
ACPI\PNP0501\1 : Порт связи (COM2)
ACPI\PNP0501\2 : Порт связи (COM1)
FTDIBUS\VID_0403+PID_6001+AH02JYRNA\0000 : USB последовательный порт (COM3)
Найдено 3 совпадающих устройства.
Вы можете обработать этот вывод, чтобы узнать номер COM-порта вашего нужного устройства.
Ответ или решение
Для нахождения COM-порта конкретного устройства через командную строку в Windows, вы можете использовать утилиту DevCon или другие инструменты, такие как WMI (Windows Management Instrumentation). Ведь, хотя Device Manager показывает необходимую информацию, вы хотите интегрировать эту функциональность в ваш Python-скрипт.
Использование DevCon для нахождения COM-порта USB Serial Converter
-
Скачивание DevCon: Убедитесь, что у вас установлена утилита DevCon. Она входит в состав Windows Driver Kit (WDK). Вы можете скачать WDK с сайта Microsoft.
-
Командный ввод: Если у вас уже есть DevCon, откройте командную строку с правами администратора.
-
Команда для списка всех COM-портов: Введите следующую команду для получения списка всех подключенных портов:
devcon.exe FindAll =Ports
Эта команда выведет список всех устройств, которые система распознает как COM-порты. Результат будет содержать информацию о каждом порту, включая его имя и номер.
Пример вывода:
ACPI\PNP0501\1 : Communications Port (COM2)
ACPI\PNP0501\2 : Communications Port (COM1)
FTDIBUS\VID_0403+PID_6001+AH02JYRNA\0000 : USB Serial Port (COM3)
3 matching device(s) found.
- Парсинг вывода: Если в выводе присутствует ваше устройство (например, "FTDIBUS\VID_0403+PID_6001+AH02JYRNA"), вы можете использовать Python для парсинга этого вывода и извлечения необходимого номера порта.
Пример кода на Python для парсинга
Вот пример кода, который выполняет команду DevCon и извлекает номер COM-порта для вашего USB Serial Converter:
import subprocess
import re
# Выполняем команду DevCon
process = subprocess.Popen(['devcon.exe', 'findall', '=Ports'], stdout=subprocess.PIPE)
output, _ = process.communicate()
# Декодируем байты в строку
output = output.decode()
# Ищем нужное устройство по VID и PID
pattern = r'FTDIBUS\\VID_0403\+PID_6001\+AH02JYRNA\\\w+\s+:\s+USB Serial Port\s+\(COM(\d+)\)'
match = re.search(pattern, output)
if match:
com_port = match.group(1)
print(f'Номер COM-порта для USB Serial Converter: COM{com_port}')
else:
print('USB Serial Converter не найден.')
Заключение
Используя приведенные методы, вы сможете находить COM-порты через командную строку и интегрировать эти функции в ваш код. Утилита DevCon и Python предоставляют мощные инструменты для управления устройствами и парсинга данных, что существенно упростит вашу работу с устройствами в среде Windows. Если у вас возникли дополнительные вопросы, не стесняйтесь обращаться.