Com порты в реестре

Удаление занятых COM портов

Опубликовано 17.03.2014 23:34:00

Удаление занятых COM портов. Переназначение COM порта для устройства.

Как вы знаете платы семейства Arduino взаимодействуют с компьютером используя COM порт или эмулируя его. Работая с несколькими платами вы наверное замечали, что для каждого нового COM устройства назначается порт с новым номером. Таким образом Windows запоминает устройства, с которыми вы работали ранее. Некоторые программы некорректно работают с COM портами с номерами 10 и выше. Что же делать в случае, если ваша плата получила такой номер? Как переназначить COM порт для устройства? Как удалить зарезервированные COM порты?

Давайте посмотрим что можно сделать. Примеры для ОС Windows 7.

Часть 1. Удаление неиспользуемых устройств

Открываем Мой Компьютер > Свойства

Свойства» class=»z-img-responsive» src=»http://zelectro.cc/Content/Uploads/152/Files/1.png» style=»height:259px; width:287px» />

Выбираем «Дополнительные параметры системы».

Открываем настройки переменных среды.

Создаем новую переменную.

Добавляем переменную DEVMGR_SHOW_NONPRESENT_DEVICES. Устанавливаем для неё значение в 1.

Нажимаем везде «ОК» и выходим. Далее идём в Диспетчер устройств (Мой Компьютер > Свойства > Диспетчер устройств). В пункте меню «Вид» включаем отображение скрытых устройств.

Теперь нам стали видны наши неиспользуемые устройства, занимающие COM порты и мы можем удалить их.

Часть 2. Переназначения COM порта для устройства

В Диспетчере устройств (Мой Компьютер > Свойства > Диспетчер устройств) выбираем устройство, которому мы хотим изменить COM порт.

На вкладке «Параметры порта» нажимаем «Дополнительно».

Назначаем желаемый номер для COM порта и нажимаем «ОК».

А как же комментарии?

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

zelectro.cc

Удаление несуществующих COM-портов

Операционные системы семейства Microsoft Windows поддерживают до 255 последовательных портов. Каждый из этих COM-портов может быть обнаружен с помощью механизма Plug-n-Play с тем, чтобы в дальнейшем обращение к нему выполнялось по мнемоническому имени с COM1 до COMx. Программное обеспечение знает, что UART, обеспечивающий работу последовательного порта по RS232-протоколу, может быть подключен к одной из шинных аппаратных реализаций: начиная с безнадежно устаревших ISA/PCI до самых современных LPC/PCI Express. Не редкость встретить COM-порт на USB-шине, не говоря уже о том, что его функциональность обязательно встроена в Bluetooth-адаптеры и ряд аналогичных коммуникационных устройств.

Операционная система остается в неведении относительно последовательных портов в том случае, когда COM-устройство отключено или исчезло из системы (выполнен unplug). На это случай закрепленное за ним мнемоническое имя в Windows сохраняется, а любому новому COM-порту присваивается первое незанятое имя. Этот процесс документируется в реестре с помощью переменной ComDB, которая хранится в разделе COM Name Arbiter.

Битовое поле ComDB устанавливает флаги (т.е. записывает единицы с соответствующие биты) в тех случаях, когда система задействует тот или иной COM-порт. Так, если у нас есть плата с двумя COM-портами, реализованными силами встроенного SIO-контроллера, переменная ComDB будет равна 03 00… Это означает, что мнемоническое имя COM1 (бит 0) и COM2 (бит 1) заняты. Появление в системе, например, еще одного двухпортового устройства вызовет к жизни COM3 и COM4:


Рис 1. Дополнительные порты COM3 и COM4 в диспетчере устройств

ComDB станет равна 0f 00… И процесс может продолжаться до исчерпания ресурсов системы:


Рис 2. Значение переменной ComDB в COM_Name_Arbiter для COM3/COM4

Как удалить несуществующие COM-порты?

Казалось бы, для того чтобы избавиться от всех последовательных портов, можно отредактировать реестр так, что переменная ComDB будет равна 03 или нулю (в качестве эксперимента по абсолютному удалению COM-портов). Действительно, в операционной системе Windows XP этого было достаточно для приведения ситуации с последовательными портами в исходное состояние. При этом дополнительные COM-порты автоматически обнаруживаются системой. Им присваиваются «правильные» мнемонические имена.

Начиная с Windows Vista ситуация с управлением последовательными портами несколько изменилась. По-прежнему поддерживается битовое поле ComDB, отображающее использование мнемонических имен, но его обнуление уже не дает желаемого эффекта.

Как подчистить COM-порты в Windows 7?

Для того чтобы получить доступ к скрытым последовательным портам в «семерке» нужно выполнить ряд несложных процедур. Перво-наперво требуется в списке переменных среды установить значение системного параметра DevMgr_Show_NonPresent_Devices=1. Если его там нет, следует просто добавить указанное имя.


Рис 3. Добавление новой переменной среды Windows позволит управлять COM-портами

Это позволит в «Диспетчере устройств» показать скрытые устройства, а значит — и удалить неиспользуемые:


Рис 4. Доступ к несуществующим COM-портам

Их легко отличить от существующих в данный момент COM-портов: они отображаются бледным цветом:


Рис 5. Управление неиспользуемыми COM-портами

Так можно распрощаться со всеми девайсами, которые когда-то были обнаружены Windows, но сейчас не подключены к системе. Не стоит забывать, что управление свободными мнемоническими именами по-прежнему делегировано переменной ComDB, в чем можно убедиться, заглянув в системный реестр.

v-comp.kiev.ua

Com порты в реестре

Реестр морских портов

В соответствии с федеральным законом 08.11.2007 N 261-ФЗ «О морских портах в Российской Федерации и о внесении изменений в отдельные законодательные акты Российской Федерации» морские порты подлежат государственной регистрации в Реестре морских портов Российской Федерации.

Ведение Реестра морских портов Российской Федерации осуществляется в порядке, установленном уполномоченным Правительством Российской Федерации федеральным органом исполнительной власти — Федеральным агентством морского и речного транспорта.

В реестр морских портов России включены 67 портов, которые входят в восемь морских бассейнов и расположены на берегах 12-ти морей трёх океанов и Каспийского моря.

В Реестр морских портов Российской Федерации вносятся следующие сведения: порядковый регистрационный номер морского порта; наименование морского порта; местонахождение морского порта; дата и номер решения об открытии морского порта для оказания услуг; перечень операторов морских терминалов, а также услуг, оказание которых осуществляется операторами морских терминалов; основные технические характеристики морского порта, в том числе его возможности по перевалке грузов, обслуживанию судов и (или) обслуживанию пассажиров; период навигации; наименование и адрес администрации морских портов; основание и дата исключения морского порта из Реестра морских портов Российской Федерации.

Исключение морского порта из Реестра морских портов Российской Федерации осуществляется на основании решения Правительства Российской Федерации о закрытии морского порта для оказания услуг не ранее чем через год со дня принятия такого решения.

www.morflot.ru

CS-CS.Net: Лаборатория Электрошамана

Собираю электрощиты для квартир, дач и коттеджей с автоматикой и без. Консультирую и обследую ремонты или другие объекты.

Изменение номера COM-портов / Отображение скрытых устройств

Столкнулся тут недавно с тем, что у меня куда-то пропадают номера COM-портов (интерйфес RS-232, через который работает моя управлялка освещением на Ke-USB24A). Недавно был COM16, переключил разъёмчик USB — порт вдруг стал уже COM22. Неее, не дело! Полез разбираться и заодно делюсь с вами, читатели, как удалить записи об отключённых и ненужных устройствах и сменить номер COM-порта в Windows. Написано будет про Windows XP, думаю, по другие винды надо будет действовать по аналогии.

Приношу снова извинения за скриншоты: я сначала окучил все устройства, а потом решил накатать в блог: так что на некоторых скриншотах будет всё уже культурно без «мусора», об удалении которого я пишу в статье.

Первым делом я полез в свойства устройства, чтобы сменить номер порта в свойствах устройства и обломался. Мой любимый COM16 (под него настроениа програ по умолчанию) был кем-то занят (по словам системы). Так как с системой я разговариваю также, как с проводочками — «Слышь ты, с##ка!! Охренела чтоле?!», то я вспомнил об одной замечательной системной переменной DEVMGR_SHOW_NONPRESENT_DEVICES, которая позволяет хорошо почистить базу данных (и реестр) от записей о старых устройствах. Но — обо всём по порядку.

Переменная среды DEVMGR_SHOW_NONPRESENT_DEVICES заставляет Диспетчер устройств показывать все-все устройства, записи о которых есть в базе данных Windows (часть хранится где-то в системных папках, часть в реестре — поэтому я пишу о базе данных). Для начала нам надо её установить или создать, если до этого такой шаг никогда не делался.

Тыкаем по значку Мой компьютер правой кнопкой, выбираем Свойства (горячие клавиши: Win+Break). Открывается откно «Свойства системы«.

Переходим в нём на вкладку «Дополнительно«, и в самом низу видим кнопку «Переменные среды«. Она нам и нужна. Кстати, замечание в сторону: на этой же вкладке в рамке «Загрузка и восстановление» находится кнопка «Параметры«, за которой сныкана очень полезная галочка «Выполнить автоматическую перезагрузку«, которая на свежей Windows всегда стоит. А это значит, что при возникновении синего экрана (BSOD, STOP 0x…) система сразу же жестоко перезагружается, не давая его как следует рассмотреть. Настоящие пользователи не могут себе простить этого, поэтому можно зайти вэтот раздел настроек и галку снять.

Ну а у нас открыто окно «Переменные среды«, где мы видим два раздела: «Переменные среды пользователя xx» и «Системные переменные«. Вообще, эти все «переменные»- аналог старого доброго SET PATH= и прочих SET xx=yy в bat-файлах. Только теперь, в Windows, они делятся ещё и на персональные для пользователя, или на глобальные для всех пользователей. В локальных я обычно, когда ставлю систему, исправляю TEMP и TMP на что-то более короткое — например, перенаправляю в тот же системный каталог %SystemRoot%\Temp. Раньше из-за этого ругались старые инсталляторы какого-нибудь хитрого софта и старые версии конкретно InstallShield — они не могли создать свои временные файлы по длинному пути. Это уменьшает безопасность системы, так как всякие Word’ы кладут временные файлы документов тоже в Temp и, следовательно, потенциально любой юзер может видеть их в общей временной папке.

Нам же нужны «Системные переменные«, и конкретно DEVMGR_SHOW_NONPRESENT_DEVICES. Посмотрите в списке, если её нет — тогда нажимаем кнопку «Создать«, и заполняем открывшееся окошко «Новая системная переменная«. Если же переменная есть в списке — проверьте правильность её написания и значение — 1.

Регистр написания не имеет значения, но исторически названия переменных обычно пишут заглавными буквами. Итак, убеждаемся, что наша переменная есть в списке.

После этого обязательно нужно перезагрузить систему!

Удаление неиспользуемых устройств (часть 2)

Итак, мы перезагрузились, и теперь можно открывать диспетчер устройств. Я снова сделаю это через тот же значок «Мой компьютер» на рабочем столе (надо сказать, он только для этого там и висит). Тыкаем правой кнопкой, выбираем в меню пункт «Управление«. Надо сказать, что это быстрее, чем лазить по всяким панелям управления и Пуск’ам. Сравните: Пуск > Настройка > Панель управления > Администрирование > Управление компьютером, или один клик? Хе-хе.

У нас (через некоторое время тупняка) открывается замечательная консоль «Управление компьютером«, в которой нас интересует всего один пункт: «Диспетчер устройств«. Тыкаем на него слева в дереве, и справа у нас радостно открывается другое дерево — всяких устройств, которые подключены в системе и для которых стоят драйвера.

Мы, не менее радотсно сразу же лезем в меню «Вид«, выбирая пункт «Показать скрытые устройства» и, если наша переменная DEVMGR_SHOW_NONPRESENT_DEVICES была установлена верно и система была перезагружена, мы увидим список устройств раза в два-три больше, чем обычно.

Ради интереса можно раскрыть какую-нибудь ветку, чтобы посмотреть, как же система выводит информацию о подключённых и неподключённых устройствах. Я развернул раздел «Клавиатуры» и USB-устройств. Почему вообще так много устройств и откуда они берутся? Дело в том, что система (не от дурости, а для умности) запоминает не только код производителя (VendorID) и модель (ModelID) устройства, а ещё и то место на шине, куда оно подключено. Для всяких плат — это номер (или какой-то внутрений идентификатор) слота PCI, PCI-E, для USB — номер разъёма. Каждая такая комбинация считается совершенно отдельным устройством, для которого нужны драйвера.

Почему же система тогда не просит драйвера от, например, принтера, если мы его переткнули в другой разъём? При первом подключении принтера — понятно, система не знает устройство и просит дрова. А при последующих к другому разъёму? В этом случае работает база данных драйверов, где прописано что для VendorID+ModelID — такой-то драйвер. И при изменении подключения устройства система берёт тот же драйвер, какой и был, ничего не спрашивая.

Итак, рассмотрим скриншот повнимательнее. Зелёным я выделил те устройства, которые система знает (они подключены) в данный момент. Красным — те, которых нет (они сейчас не подключены). Сама система их, если приглядеться, маркирует или яркой, или затенённой иконкой. Клавиатур две, потому что это ноутук с подключенной отдельной клавиатурой по USB. Так как дырок USB у меня 4, и ещё было две разных клавы, то этих «Клавиатура HID» наплодилась куча. Можно смело удалить те, которые серые.

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

Ну а нам ещё надо показать, где же можно поменять (или освободить) себе красивый портик COM для наших задач. Эти порты (даже те, которые получаются от RS-232<>USB преобразователей) лежат в разделе «Порты (COM и LPT)«. Моё устройство маркируется как CS COM-USB Bridge, и изначально вдруг повисло на COM22. Мне же хотелось получить назад свой COM16 (на скрине он уже есть). Только включив «Показать скрытые устройства«, я понял всю глубину грехопадения 🙂 Эти чёртовы сотики отожрали себе ВСЕ порты, какие могли!! Естественно, они были не подключены сейчас к системе, изначально их было не видно, а на моём порту COM16 стояло гордое «(используется)». Потому что я переткнул разъём своего Ke-USB24A в другую дырку. А это, видите ли, уже новое мля устройство! Ну ничего! Старое с COM16 было удалено, и текущий девайс был переназначен на тот, старый порт.

Как это сделать? Лезем правой кнопкой на девайс, выбираем свойства (особо резвым можно просто два раза щёлкнуть левой). Показал на примере другого порта.

Открывается окно свойств устройства, где нас интересует вкладка «Параметры порта«. Особо отмечу, что все эти скорости, чётности: а) всё равно настраиваются программно в той проге, которая общается с таким USB-RS-232 устройством, б) По USB всё равно ни на что не влияют. Тыкаем кнопку «Дополнительно».

И у нас открывается мелкое окошко, но с огромным списком портов. Вообще,номер порта зарезервирован от 1 до 65535, тут решили ограничиться 256. Вот так! А вы- COM1-COM4. Кстати, это хороший камень в сторону тех идиотин, которые делают программаторы (и другие важные и нужные устройства) со старым софтом, где окошко выбора порта выглядит как 4 переключателя-точки (radio-button): «Выберите порт: () COM1 (*) COM2 () COM3 () COM4». И всё. Поэтому, кстати, у меня в проге управления порт выбирается списочком.

Здесь можно выбрать любой свободный порт. Я постарался перегруппировать все девайсы так, чтобы высвободить самые первые номера портов. Высвободились COM1 и COM2 — мне хватило. Ещё важное замечание: правильные данные об «(используется)» обновляются всё же после перезагрузки, так что два-три раза систему подёргать придётся. Мне лень — в статье нужно было показать только принцип. Играйтесь!

Ну а я же сделал себе свой любимый COM16 под девайс, включил свет и пошёл заниматься своими делами. Вот так. Ибо нефига.

cs-cs.net

Очистка занятых COM портов

Каждый раз при подключении нового COM устройства или USB устройства (верно для модем, мобильных телефонов, Bluetooth, конвертеров последовательных портов в USB и т.п.), Windows определяет его через механизм Plug-n-Play и назначит ему некий номер COM порта в диапазоне от 1 до 255. При повторном подключении этого же устройств, ему назначается ранее зарезервированный за ним COM порт. Новым устройствам выдается первый незанятый номер COM порта. Не редкость, когда внешние устройства при подключении создают сразу несколько COM портов (в моем случае после подключения адаптер Bluetooth, в системе появилось сразу 10 . новых COM портов).

Ряд приложений (как правило, довольно древних), способны адресовать только двухзначные номера COM портов, отказываясь работать с COM100 и выше. В самых «запущенных» вариантах, такие программы корректно работают только портами с COM1-COM9. Что делать, если подключенное устройство получило высокий номер? Можно ли сбросить нумерацию для зарезервированных COM портов и удалить назначенные порты? Попробуем разобраться на примере Windows 7.

Как правило в свойствах оборудования изменить выданный COM порт на другой не получается, т.к. система пишет, что все «низкие» COM порт уже используются (in use).

Смена номера COM порта для конкретного устройства

В первую очередь стоит попробовать вручную переопределить номер COM порта для определенного COM-устройства. Предположим требуемый COM порт уже занят, и мы хотим его попробовать его освободить.

  1. Запустим диспетчер устройств (Device Manager) таким образом: set devmgr_show_nonpresent_devices=1
    start devmgmt.msc
  2. В меню консоли выберем View->Show Hidden Devices.
  3. Разверните ветку Ports (COM &LPT) и в списке найдите устройство, которому назначен нужный COM порт (бледная иконка означает, что данный COM порт назначен, но в настоящий момент это устройство не подключено). Щелкните по нему ПКМ и выберите Uninstall
  4. Освобожденный COM порт может быть назначен другому устройству. Найдите в этой же ветке свое устройство, откройте окно его свойств (Properties). Затем перейдите на вкладку PortSettings и нажмите кнопку Advanced. В выпадающем списке выберите неиспользуемый COM порт.

Приведенная выше методика не всегда позволяет освободить занятый COM порт. В этом случае придется прибегнуть к редактированию реестра.

Сброс привязок COM портов через реестр

Информация об используемых COM портах хранится в ключе реестра CommDB в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter

    Откройте редактор реестра (regedit) и перейдите в указанную ветку.


Значение параметра ComDB в двоичном формате определяет список COM портов зарезервированных в системе. Каждый бит определяет состояние соответствующего порта (от 1 до 255). К примеру, если нам нужно оставить резервацию только для COM3, hex значение ComDB будет равно 04 (0000 0100)

winitpro.ru

Смотрите так же:

  • Разрешения в diablo 2 Разрешение ( Игра на весь экран ) Народ, давно я не играл. Сейчас ноутбук HP 2016 года На нем windows 10. Игра идет при разрешении 800*600, но ! по бокам черные полосы, т.е. не на весь экран. Есть вариант поправить ? Глайд в помощь. […]
  • Касперский вечный триал реестр Касперский вечный триал реестр Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 Сбрасываем активацию ВРУЧНУЮ! Сброс активации в версиях 6.x и 7.х 1) […]
  • Lowerfilters в реестре Lowerfilters в реестре Windows или программы не обнаруживают и не распознают дисковод CD/DVD-дисков. Windows или программы не могут обнаружить и распознать дисковод для CD/DVD-дисков, поэтому к дискам нет доступа и их нельзя […]
  • 1024 х 768 разрешение Определение текущего и родного разрешения экрана монитора в Windows Разрешение экрана монитора является важным фактором, дающим качество представления изображения на дисплеи. Оно измеряется в пикселях по ширине и высоте. Чем больше […]
  • 10 программ для чистки реестра Программы для очистки реестра В операционной системе Windows реестр играет роль базы данных, в которую заносится вся информация о ПО (программы, драйверы, библиотеки), настройки самой системы, и много других необходимых данных. Поэтому со […]
  • Нет службы удаленный реестр Нет службы удаленный реестр Если Вы долго проработали с Windows XP, или любой другой версией Windows выпущенной за последние 10 лет, то, несомненно, Вы знакомы с реестром Windows и Вам известно, что реестр это сердце ОС Windows. Почти […]