Изменить COM-порт через реестр, командную строку или программное обеспечение?

StackOverflow https://stackoverflow.com/questions/2002890

  •  18-09-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает, как изменить номер COM-порта, который Windows сопоставляет виртуальному COM-порту USB?Вы можете изменить это через Диспетчер устройств и нажать на кнопку Дополнительно..но как вы можете сделать это с помощью API, изменения реестра или командной строки?

Пожалуйста, есть какие-нибудь идеи?

Это было полезно?

Решение

Возможно, вы найдете этот ответ полезным:

Как мне получить понятное имя COM-порта в Windows?

Речь идет о поиске понятного имени, но я думаю, вы обнаружите, что оно указывает вам на нужную область реестра, используя "официальный" механизм для поиска нужного ключа.

Однако, если вы измените назначение порта, вам также следует обновить базу данных com-портов - см.: https://msdn.microsoft.com/en-us/library/ff546481.aspx

Когда мне пришлось сделать что-то подобное, я нашел нужное устройство, используя механизм, описанный в связанной статье SO, а затем вызвал SerialDisplayAdvancedSettings((HWND)NULL, hDeviceInfo иdevInfoData);чтобы отобразить расширенное диалоговое окно и позволить операционной системе выполнить всю тяжелую работу.

В настоящее время вы все чаще и чаще сталкиваетесь со странными "ненастоящими" последовательными портами (напримерUSB-порты), которые могут иметь другие несовместимости, о которых вам также следует опасаться.

Другие советы

Я отслеживал изменения в реестре при смене COM-порта 1 на 110 и обнаружил изменения в следующих ключах:

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] "\Device\Serial0"="COM110"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Арбитр имен COM] "ComDB"=шестнадцатеричное значение (3):FC,7F,00,00,00,00,00,00,00,00,00,00,00,20,00,00,00,00,00,00,\ 00,00,00,00,00,00,00,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI\PNP0501\1\Параметры устройства] "PortName"= "COM110"

Навскидку, я не знаю, как это сделать, но вот что я бы сделал:

Используйте метод "Мой компьютер / Диспетчер устройств", чтобы назначить какой-нибудь маловероятный com-порт, например 61.Затем используйте regedit для поиска COM61 и посмотрите, что сделал диспетчер устройств.

Я знаю, что где-то видел все эти вещи в реестре, но быстрый поиск в базе знаний не дал ответов.

Это изменение выполняется в два нижеприведенных шага в реестре через "regedit".:

  1. Измените название:На первом шаге вам нужно изменить приведенные ниже клавиши:1.1.В "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\XXX" это XXX - имя вашего устройства.Вам нужно отследить каждый элемент, чтобы найти "Дружественное имя", а затем изменить его по своему усмотрению (например:"Последовательный порт USB (6)").1.2.В предыдущем ключе вам снова нужно отследить элемент, чтобы найти "PortName" и изменить его на номер порта (например:"COM6")

  2. Измените номер порта:В "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" вы можете найти "ComDB", которая представляет собой битовую маску уже выделенных COM-портов.Это значение должно быть изменено в зависимости от ваших COM-портов.Обратите внимание, что первый байт управляет COM8 ~ 1, второй байт управляет COM16 ~ 9, третий байт управляет COM24 ~ COM17 и так далее.Значение=0 означает, что порт не используется.Значение=1 означает, что порт занят.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top