Очищення зайнятих COM портів у Windows
Коли ви підключаєте до комп'ютера нове COM або деякі USB пристрої (наприклад, USB модем, мобільний телефон, Bluetooth адаптер, конвертерів послідовних портів USB і т.п.), Windows визначає його через механізм Plug-n-Play і призначить йому номер COM порту в діапазоні від 1 до 255 (COM1, COM2, COM3 тощо). При повторному підключенні цього пристрою, йому призначається номер COM порту (Communication Port, або Serial port), зарезервований за ним раніше. Новим пристроям видається перший незайнятий номер порту COM. Не рідкість, коли зовнішні пристрої при підключенні створюють відразу кілька портів COM (у моєму випадку після підключення адаптера Bluetooth, в системі з'явилося відразу 10. нових COM портів).
Ряд додатків (як правило, досить давніх) здатні адресувати тільки двозначні номери COM портів, і відмовляються працювати з COM100 і вище. Або бачать лише COM1-COM9 пристрої. Що робити, якщо підключений пристрій отримав високий номер порту COM? Чи можна скинути нумерацію для зарезервованих портів COM і видалити призначені порти?
Змінити номер COM порту пристрою у Windows
У Windows можна вручну змінити номер порту COM, призначений для пристрою. Припустимо необхідний COM порт вже зайнятий, і ми хочемо спробувати його звільнити. Для цього:
- Відкрийте диспетчер пристроїв (Device Manager) командою devmgmt.msc;
- У меню виберіть View ->Show Hidden Devices ;
- Потім розгорніть Ports (COM & LPT) та знайдіть у списку пристрій;
- Перейдіть на вкладку Port Settings та натисніть кнопку Advanced;
- Поточний номер COM порту, призначений для пристрою вказаний у полі COMPortНомер ;
- Щоб змінити його, розкрийте список, що випадає, і виберіть номер COMпорту, який хочете задати.
Але найчастіше змінити номер COM порт на інший не вийде, тому що всі низькі COM порт вже використовуються (in use);
- У цьому випадку потрібно спробувати видалити резервацію COM порту за іншим пристроєм. У гілці Ports (COM & LPT) знайдіть якому призначений потрібний вам номер COM порту (бліда іконка означає, що даний COM порт призначений, але зараз цей пристрій не підключено);
- Клацніть на ньому ПКМ і виберіть Uninstall;
- Тепер ви можете призначити о звільнений COM порт іншого пристрою. Ще раз відкрийте властивості вашого пристрою, перейдіть на вкладку PortSettings ->Advanced . Введіть вільний номер COM порту для вашого пристрою.
Однак такий спосіб дозволяє звільнити зайнятий COM порт не завжди.
Ви можете вивести повний список зайнятих COM портів у Windows за допомогою PowerShell:Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description
Можна визначити номер COM порту для певного пристрою на його ім'я, наприклад:
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*Arduino*">|select name, deviceid
Або
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*GPS*">|select name, deviceid
Визначаємо процес, який використовує COM у Windows
Ви не зможете звільнити COM порт пристрою, який використовується Windows або запущеною програмою процесом. Спочатку потрібно завершити процес/програму, яка використовує зараз COM порт. Щоб визначити ім'я процесу, який використовує COM порт знадобиться утиліта Process Explorer (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer).
Спочатку потрібно вивести ім'я служби, яка використовує порт COM. Виконайте команду PowerShell:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service
Ім'я служби цього COM порту вказано у стовпці Service. Наприклад, для COM2 це Serial . Тепер потрібно запустити Process Explorer із правами адміністратора та вибрати в меню Find -> Find Handle або DLL. У рядку Hangde or DLL substring введіть значення Service, отримане раніше. У нашому прикладі це Serial.
Process Explorer повинен показати процес, який використовує зараз ваш порт COM. Щоб звільнити COM порт, завершіть процес або програму.
Скидання призначених COM портів Windows через реєстр
Інформація про COM порти, що використовуються, зберігається в ключі реєстру. CommDB у розділі HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCOM Name Arbiter
-
Відкрийте редактор реєстру ( regedit.exe ) і перейдіть у вказану гілку.
Важливо ! Рекомендуємо заздалегідь створити резервну копію даної гілки реєстру ( File -> Export ). Якщо щось піде не так, ви зможете повернутися до початкової конфігурації COM портів.
Важливо! Будьте дуже уважними, ні в якому разі не додайте в цей параметр додаткові байти, інакше система може почати падати в BSOD.
Примітка . У розділі HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM можна побачити повний список COM портів, доступних у Windows. HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM можна побачити список COM портів, підключених до системи.
Також ви можете використовувати наступні дві безкоштовні утиліти для очищення зайнятих (In Use) COM портів:
- COM Name ArbiterTool - Утиліта для звільнення зайнятих COM портів. Запустіть утиліту з правами адміністратора, виберіть COM порти, які ви хочете звільнити та натисніть Clear unused Reservationsта Remove non-present devices;
- Device Cleanup Tool – утиліта використовується для пошуку в реєстрі інформації про раніше підключені пристрої (у гілці HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnum) та видалення невикористовуваних пристроїв та очищення резервацій COM портів.
Очищення зайнятих COM портів у Windows
Коли ви підключаєте до комп'ютера нове COM або деякі USB пристрої (наприклад, USB модем, мобільний телефон, Bluetooth адаптер, конвертерів послідовних портів USB і т.п.), Windows визначає його через механізм Plug-n-Play і призначить йому номер COM порту в діапазоні від 1 до 255 (COM1, COM2, COM3 тощо). При повторному підключенні цього пристрою, йому призначається номер COM порту (Communication Port, або Serial port), зарезервований за ним раніше. Новим пристроям видається перший незайнятий номер порту COM. Не рідкість, коли зовнішні пристрої при підключенні створюють відразу кілька портів COM (у моєму випадку після підключення адаптера Bluetooth, в системі з'явилося відразу 10. нових COM портів).
Ряд додатків (як правило, досить давніх) здатні адресувати тільки двозначні номери COM портів, і відмовляються працювати з COM100 і вище. Або бачать лише COM1-COM9 пристрої. Що робити, якщо підключений пристрій отримав високий номер порту COM? Чи можна скинути нумерацію для зарезервованих портів COM і видалити призначені порти?
Змінити номер COM порту пристрою у Windows
У Windows можна вручну змінити номер порту COM, призначений для пристрою. Припустимо необхідний COM порт вже зайнятий, і ми хочемо спробувати його звільнити. Для цього:
- Відкрийте диспетчер пристроїв (Device Manager) командою devmgmt.msc;
- У меню виберіть View->Show Hidden Devices;
- Потім розгорніть Ports (COM & LPT) та знайдіть у списку пристрій;
- Перейдіть на вкладку Port Settings та натисніть кнопку Advanced;
- Поточний номер COM порту, призначений для пристрою вказаний у полі COMPortНомер;
- Щоб змінити його, розкрийте список, що випадає, і виберіть номер COMпорту, який хочете задати.
Але найчастіше змінити номер COM порт на інший не вийде, тому що всі низькі COM порт вже використовуються (in use);
Однак такий спосіб дозволяє звільнити зайнятий COM порт не завжди.
Ви можете вивести повний список зайнятих COM портів у Windows за допомогою PowerShell:Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description
Можна визначити номер COM порту для певного пристрою на його ім'я, наприклад:
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*Arduino*">|select name, deviceid
Або
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*GPS*">|select name, deviceid
Визначаємо процес, який використовує COM у Windows
Ви не зможете звільнити COM порт пристрою, який використовується Windows або запущеною програмою процесом. Спочатку вам потрібно завершити процес/програму, яка використовує зараз COM порт. Щоб визначити ім'я процесу, який використовує COM порт знадобиться утиліта Process Explorer (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer).
Спочатку потрібно вивести ім'я служби, яка використовує порт COM. Виконайте команду PowerShell:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service
Ім'я служби цього COM порту вказано у стовпці Service. Наприклад, для COM2 це Serial. Тепер потрібно запустити Process Explorer із правами адміністратора та вибрати в меню Find -> Find Handle або DLL. У рядку Hangde or DLL substring введіть значення Service, отримане раніше. У нашому прикладі це Serial.
Process Explorer повинен показати процес, який зараз використовує ваш COM порт. Щоб звільнити COM порт, завершіть процес або програму.
Скидання призначених COM портів Windows через реєстр
Інформація про COM порти, що використовуються, зберігається в ключі реєстру. CommDB у розділі HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
-
Відкрийте редактор реєстру (regedit.exe) і перейдіть у вказану гілку.
Важливо! Рекомендуємо заздалегідь створити резервну копію даної гілки реєстру (File -> Export). Якщо щось піде не так, ви зможете повернутися до початкової конфігурації COM портів.
Важливо! Будьте дуже уважними, ні в якому разі не додайте в цей параметр додаткові байти, інакше система може почати падати в BSOD.
Примітка. У розділі HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можна побачити повний список COM портів, доступних у Windows. HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можна побачити список COM портів, підключених до системи.
Також ви можете використовувати наступні дві безкоштовні утиліти для очищення зайнятих (In Use) COM портів:
- COM Name ArbiterTool - Утиліта для звільнення зайнятих COM портів. Запустіть утиліту з правами адміністратора, виберіть COM порти, які ви хочете звільнити та натисніть Clear unused Reservationsта Remove non-present devices;
- Device Cleanup Tool – утиліта використовується для пошуку в реєстрі інформації про раніше підключені пристрої (у гілці HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum) та видалення невикористовуваних пристроїв та очищення резервацій COM портів.
Антон 02.02.2016 Вже року 4 як не бачив комп'ютера з COM-портом, а ви тут COM пристрої препарувати удумали Відповісти
Andrew 02.02.2016 Антуан, вже року 4 як не бачив комп'ютера з COM-портом, мучаюся, доводиться користуватися перехідниками, ПК не тільки для вконтакту. Відповісти
Іван 30.04.2019 Вибач, але комп'ютери існують не тільки для іграшок та вконтактиків. Я за кілька років бачив кілька десятків комп'ютерів з комп'ютерами. Відповісти
Жорж 28.11.2021 COM-порт бачиш? а він там є і не один. ВідповістиStanner 14.02.2016 Ті, хто часто перепрошує гаджети на МТК, стикається з проблемою COM-портів, що поступово займаються.
На даний момент я, як і раніше, із задоволенням користуюсь двома утилітами цього автора:
- COM Name Arbiter Setter для звільнення портів
— Device Cleanup Tool для очищення від старих непідключених пристроїв Відповісти
Валерій 14.04.2016 Здрастуйте, чи можливо прив'язати usb-сом перехідник до конкретного порту? Періодично стрибає на інший порт і зв'язок з пристроєм втрачається. Відповісти
Ільшат 09.06.2016 Не я один виявляється таким. Чи не знайшли вирішення проблеми? ВідповістиІльшат 09.06.2016 Доброго дня.
Проблема у мене з com портом, а точніше після кожного перезавантаження Сканер штрих кодів бере собі новий порт і щоразу у користувача в налаштуваннях 1С треба по новій вказувати новий порт. У продавців таких прав немає, тож доводиться щоранку самому це робити. Чому так відбувається? Різні сканери спробував (однієї й тієї ж моделі), так само змінюють.Касові апарати та інше обладнання нормально поводиться. Може тому, що харчування не вистачає? Хоча намагався чіпляти сканер через USB HUB з додатковим живленням, однаково така біда. Комп = моноблок. На інших моноблоках немає проблем. Виходить проблема USB моноблока? як можна вийти зі становища? Міняти моноблок не варіант (
Windows 7 x64 Pro Відповісти
itpro 10.06.2016 Спробуйте так:
1) Визначте Vendor ID (VID) і Product ID (PID) вашого USB хаба через через диспетчер пристроїв
2) У реєстрі у гілці HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags створіть ключ IgnoreHWSerNumXXXXYYYY=hex:01, де XXXX = VID, а YYYY = PID
3) Ребуут Відповісти
Микола 11.07.2019 На одному комп'ютері з постійною періодичністю злітає номер COM порту. Підключений девайс має бути завжди COM9. Лікується (тимчасово) зміна на будь-який інший та повернення на COM9. Але хотілося б виправити цю помилку на корені. Може хто знає, чому він може злітати і як виправити? Дякуємо Відповісти
Віктор 24.03.2022 Доброго дня.
Можливо, хтось підкаже.
Існують ПК до яких постійно підключено пристрій usb. Воно завжди в одному порту і не вимикається. Поки не визначив після перезавантаження або якось інакше, але цей пристрій в якийсь момент визначається під іншим COM портом і з ним зникає зв'язок. Чим може бути спричинена мимовільна зміна порту, як це вилікувати? Відповісти
Олександр 27.03.2022 Чим може бути викликана мимовільна зміна порту, як це вилікувати?
— Може статися через кілька причин. 1. Погана ізоляція у деайса, девайс рестартує. 2 Драйвер злітає. Відповісти
Олександр 19.05.2023 Від проблем з блоком живлення, транзисторами на виході USB матплати, до відключення пристрою для економії енергії або нестабільної роботи драйверів та ОС. Загалом, десятки варіантів можуть бути, починаючи від заліза до софтових проблем. порядку та інших ПК такого не спостерігається.
serg 03.02.2023 Microsoft нарешті виправила свою баго фічу.
Андрій 03.03.2023 Відмінний матеріал, дуже актуальний!Андрій 03.03.2023
Electronic Team Virtual Serial Port (COM_3) VSBC9\DEVICES\0000 Unknown
Electronic Team VSPort Controlling Device for COM_3 VSBC9\DEVICES\0001 Unknown
Electronic Team Virtual Serial Port (COM-3) VSBC9\DEVICES\0002 Unknown
Electronic Team VSPort Controlling Device для COM-3 VSBC9\DEVICES\0003 Unknown
Electronic Team Virtual Serial Port (COM-3) VSBC9\DEVICES\0004 Unknown
Electronic Team VSPort Controlling Device for COM-3 VSBC9\DEVICES\0005 Unknown
Electronic Team Virtual Serial Port (COM__6) VSBC9\DEVICES\0006 Unknown
Electronic Team VSPort Controlling Device for COM__6 VSBC9\DEVICES\0007 Unknown
Electronic Team Virtual Serial Port (COM_11) VSBC9\DEVICES\0008 Unknown
Electronic Team VSPort Controlling Device for COM_11 VSBC9\DEVICES\0009 Unknown
Electronic Team Virtual Serial Port (COM__11) VSBC9\DEVICES\0010 Unknown
Electronic Team VSPort Controlling Device for COM__11 VSBC9\DEVICES\0011 Unknown
Так само хочу запитати, вивів списком і в мене залишилися сліди від програми де вони знайти не можу так як порти називав необчно це спеціальна програма, як вирішити це як їх знайти та видалити? Відповісти
Михайло 08.03.2023 при написанні(копіювання) вашого рядка get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service пише щось все в червоному кольорі і посилається на якусь ошмбку в написанні рядок1 знак14.Що не так у цьому є? Допоможіть! Відповісти
itpro 15.03.2023 Яка ОС та версія PowerShell?У 5.1 і вище команда працює Відповісти
Михайло 08.03.2023 get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service при копіюванні цього видає помилку з посиланням на рядок1 знак14. Щось не так. Допоможіть очистити сом порт 1 або 2 який зайнятий чимось але ні як не можу подолати його. Відповісти
Як змінити номер com порту windows 10
Як перепризначити COM порт для пристрою у Windows 7
Як перепризначити COM порт для пристрою у Windows 7
Як перепризначити COM порт для пристрою у Windows 7
Всім привіт сьогодні розповім як перепризначити COM порт для пристрою Windows 7. Windows запам'ятовує пристрої, з якими ви працювали раніше. Деякі програми некоректно працюють із COM портами з номерами 10 і вище. Що ж робити, якщо ваша плата отримала такий номер? Як встановити COM порт для пристрою? Як видалити зарезервовані порти COM? Все це і багато іншого, вас чекає в описі цієї статті, всі питання на цю тему я чекаю в коментарях, наприкінці статті, я постараюся дати на них розгорнуту відповідь.
Відкриваємо Мій Комп'ютер > Властивості
Як перепризначити COM порт для пристрою у Windows 7-01
Вибираємо "Додаткові параметри системи".
Як перепризначити COM порт для пристрою у Windows 7-02
Відкриваємо налаштування змінних середовища.
Як перепризначити COM порт для пристрою у Windows 7-03
Створюємо нову змінну.
Як перепризначити COM порт для пристрою у Windows 7-04
Додаємо змінну DEVMGR_SHOW_NONPRESENT_DEVICES. Встановлюємо для неї значення 1.
Як перепризначити COM порт для пристрою у Windows 7-05
Натискаємо скрізь "ОК" та виходимо. Далі йдемо в Диспетчер пристроїв (Мій Комп'ютер > Властивості > Диспетчер пристроїв). У пункті меню "Вид" включаємо відображення прихованих пристроїв.
Як перепризначити COM порт для пристрою у Windows 7-06
Тепер нам стали видно наші пристрої, що не використовуються, що займають COM порти і ми можемо видалити їх.
Як перепризначити COM порт для пристрою у Windows 7-07
У Диспетчері пристроїв (Мій Комп'ютер > Властивості > Диспетчер пристроїв) вибираємо пристрій, якому ми хочемо змінити COM порт.
Як перепризначити COM порт для пристрою у Windows 7-08
На вкладці "Параметри порту" натискаємо "Додатково".
Як перепризначити COM порт для пристрою у Windows 7-09
Призначаємо бажаний номер для COM порту та натискаємо "ОК".
Як перепризначити COM порт для пристрою у Windows 7-10
Ось так просто перепризначити COM порт для пристрою в Windows 7.
Збираю електрощити для квартир, дач та котеджів з автоматикою та без. Консультирую та обстежую ремонти або інші об'єкти.
Зміна номера 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 ». І все. Тому, до речі, у мене в прозі управління порт вибирається списком.
Величезний список COM-портів
Тут можна вибрати будь-який вільний порт. Я постарався перегрупувати всі девайси так, щоб звільнити перші номери портів. Звільнилися COM1 і COM2 - мені вистачило.Ще важливе зауваження: правильні дані про «(використовується)» оновлюються все ж таки після перезавантаження, так що двічі-тричі систему підсмикувати доведеться. Мені ліньки — у статті треба було показати лише принцип. Грайте!
Ну а я зробив собі свій улюблений COM16 під девайс, ввімкнув світло і пішов займатися своїми справами. Ось так. Бо нефіга.
Як змінити номер віртуального COM порту
Останнім часом я підключав до свого комп'ютера багато різних Arduino, конвертерів USB-TTL, так що підключаючи USB-TTL конвертер, що завалявся десь на 3.3 вольта для підключення ESP8266, я виявив, що система його бачить як COM22. XTCOM_UTIL підтримує номери портів до COM6, а ESP Flash Download Tool максимум COM16, тому резонно виникло питання
Як змінити номер віртуального COM порту?
Відповідь досить проста. Для початку спробуйте відразу зробити пункт 7 цієї інструкції. Можливо, вам пощастить, і решта просто не знадобиться. Якщо ні, то починайте із самого початку.
1. Фізично відключаємо від USB всі пристрої, до яких підключені віртуальні COM порти (у моєму випадку це конвертер USB-TTL)
2. Запускаємо cmd.exe (я волію використовувати Far Manager - він підтримує історію команд)
3. У командному рядку пишемо: set DEVMGR_SHOW_NONPRESENT_DEVICES=1 (Регістр літер ролі не грає - просто імена змінних оточення прийнято писати великими літерами). Ця команда включає відображення відсутнього обладнання в диспетчері пристроїв у поточному сеансі
4. Далі вводимо команду devmgmt.msc - Це команда запуску диспетчера пристроїв. Важливо запустити диспетчер пристроїв саме із командного рядка.
5. У диспетчері пристроїв у меню Вид обираємо Показати приховані пристрої, йдемо в розділ Порти COM та LPT та видаляємо всі COM3-COM99
6. Назад підключаємо наш пристрій (у мене це USB-SERIAL CH340) - відбувається автоматичне встановлення драйвера і, вуаля - тепер замість COM22 у мене COM3
7. Якщо вам не сподобався номер порту, який автоматично вибрала система, ви можете його змінити. Для цього в диспетчері пристроїв заходимо у властивості нашого віртуального COM-порту, переходимо на вкладку Параметри порту, далі тиснемо Додатково та вибираємо будь-який вільний номер порту.
Якщо ви хочете постійно контролювати номери віртуальних COM портів від різних пристроїв, то має сенс встановити DEVMGR_SHOW_NONPRESENT_DEVICES=1 постійно. Для цього потрібно зайти у властивості комп'ютера на робочому столі (або зайти до Панель управління - Система) і вибрати зліва Додаткові параметри системи, далі вкладка Додатково, потім Змінні середовища. У розділі Системні змінні натиснути Створити та ввести ім'я змінної DEVMGR_SHOW_NONPRESENT_DEVICES та ввести її значення 1. Тепер у вас завжди будуть відображатися всі вимкнені пристрої.
Перераховані вище дії справедливі не тільки для Windows 7, але і для інших версій.
