Ошибка инициализации com порта возможно он занят другим приложением

Сейчас повторял ошибку предварительно удалив файлы из папок Log и BugReport.
В папку BugReport не записалось ничего .. в папке Log думаю наибольший интерес вызывают строки:

13:14:41.882 [6064] TQueueTasks.OnDataChange
13:14:41.882 [6064] TQueueTasks.OnDataChange — OK, Result=OK (0x0), dwTransid=0, hGroup=0, hrMasterquality=0, hrMastererror=0, dwCount=4, phClientItems=([4] 253, 254, 255, 256), pvValues=([4] 1, 5, 2, 8), pwQualities=([4] 192, 192, 192, 192), pftTimeStamps=([4] 16.01.17 09:44:05, 16.01.17 09:44:05, 16.01.17 09:44:05, 16.01.17 09:44:05), ItemIDs=([4] UniversContr.Globs.Adres, UniversContr.Globs.Speed, UniversContr.Globs.GlobMode, UniversContr.Globs.TypeIn)
13:14:43.375 [7692] [ComPort] Инициализации СОМ порта — OK, Порт=COM10
13:14:43.759 [7692] [ComPort] Ошибка СОМ порта, Порт=COM10
13:14:43.769 [6064] TQueueTasks.OnDataChange
13:14:43.769 [6064] TQueueTasks.OnDataChange — OK, Result=OK (0x0), dwTransid=0, hGroup=0, hrMasterquality=0, hrMastererror=0, dwCount=4, phClientItems=([4] 253, 254, 255, 256), pvValues=([4] 1, 5, 2, 8), pwQualities=([4] 280, 280, 280, 280), pftTimeStamps=([4] 16.01.17 13:14:43, 16.01.17 13:14:43, 16.01.17 13:14:43, 16.01.17 13:14:43), ItemIDs=([4] UniversContr.Globs.Adres, UniversContr.Globs.Speed, UniversContr.Globs.GlobMode, UniversContr.Globs.TypeIn)
13:14:54.931 [7692] [ComPort] СОМ порт недоступен, Порт=COM10
13:14:54.932 [7692] Ошибка инициализации порта (COM10 Адрес:1)
13:15:05.608 [7692] [ComPort] СОМ порт недоступен, Порт=COM10

тут видно, что сначала инициализация порта проходит «ОК» и сразу через 400 мс Ошибка COM порта. с чем это связано? хз.
сейчас видео скину как это выглядит.

Требования.
Статья применима для Windows 2000/XP/Vista/7.

Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: «Извините, но предпочитаемый порт номер занят!». И самое интересное программа не говорит чем или кем занят порт.

Как определить каким процессом (программой) занят порт.
1. В меню «Пуск» выберите пункт «Выполнить«;
2. В поле «Открыть» наберите команду cmd и нажмите кнопку «ОК»;

Откроется окно командной строки, примерно такого вида:

3. Наберите команду netstat -ano и нажмите кнопку «Ввод» (Enter) на клавиатуре;

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

4. Теперь в колонке «Локальный адрес», находим нужный нам порт и записываем его идентификатор в колонке «PID»;

Например порт номер 80, его идентификатор 440.

5. Снова открываем меню «Пучк» и выбираем пункт «Выполнить«;
6. В поле «Открыть» вводим команду taskmgr и нажимаем кнопку «ОК»;
7. В окне «Диспетчер задач Windows» переходим на вкладку «Процессы«;
8. В главном меню открываем пункт «Вид» и выбираем пункт «Выбрать столбцы. «;
9. В окне «Выбор столбцов» находим пункт «Идентиф. процесса (PID)» и ставим рядом с ним галочку;
10. Нажимаем кнопку «ОК»;
11. Теперь в окне «Диспетчер задач Windows«, нажимаем на заголовок столбца «PID», для сортировки процессов по возрастанию;
12. Находим номер нашего процесса 440 и в столбце «Имя образа«, смотрим какой процесс занимает наш порт;

Каждый раз при подключении нового 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 порт. В этом случае придется прибегнуть к редактированию реестра.

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

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


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

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

Самая распространённая проблема занятости порта встречается именно с портом номер 80 — одним из самых основных маршрутов у многих программ.

Итак, нам нужна наша любимая командная строка. Вызывается она через меню «Выполнить», которое, в свою очередь, вызывается комбинацией горячих клавиш Windows+R. В меню «Выполнить» вводим cmd — мы в командной строке.

Здесь нам необходима команда netstat -ano (прописываем именно так, с пробелом перед дефисом и без пробела без него!).

Мы увидим множество локальных адресов. все они имеют примерный вид xxx.xxx.x.xxx:PORT. Да, порт прописывается после двоеточия.

Выбираем конкретный порт, проводим пальцем до последнего столбца и узнаем ID процесса. Запоминаем число ID. На этом работа с командной строкой закончена.

Запускаем диспетчер задач (как его вызвать, знают все: Ctrl+Alt+Del или Ctrl+Shift+ESC).

Если вы используете систему Windows 8/8.1, то ID прописываются изначально во вкладке «Подробности». Если же Ваша OS — Windows 7 или ниже, то для начала идём в меню «Вид», выбираем пункт «Выбрать столбцы» и ставим галочку напротив PID.

Подтвердив изменения, мы увидим столбец с ID. Ищем число ID из командной строки, и тем самым легко узнаём, какой процесс, а следовательно — какая программа использует тот или иной порт. Итак, теперь Вы знаете, как проверить порты на предмет забитости, а это очень даже полезное умение в условиях большого количества программ, работающих в сети Интернет. Удачи!

Как очистить эти COM-порты? >

Номера портов COM всегда кажутся чем-то занятыми, и хотя сейчас у меня есть только 4 последовательных порта (3 по Bluetooth и один USB для RS-232), у меня есть множество COM-портов, установленных как в использовании. Я бы немного почистил этот список.

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

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

При присоединении абсолютно нового COM устройства или USB устройства, Windows обнаруживает благодаря Plug-n-Play и присваивает ему номер COM порта в диапазоне от 1 до 255. Если же вы подключаете устройство еще раз, ему прикрепляется тот же, зарезервированный за ним ранее COM порт. Если же вы подключаете еще одно новое устройство, то ему назначается другой незанятый номер COM порта.

Некоторые программы (чаще старые), способны работать только на двухзначных номерах COM портов, и не работают с COM100 и более. Некоторые очень древние программы работают только портами с COM1-COM9. Как поступить, если устройство получило не нужный COM порт? Можно ли удалить номер зарезервированного COM порта?

Смена номера 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_MACHINESYSTEMCurrentControlSetControlCOM Name Arbiter

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

Каждый раз при подключении нового 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 порт. В этом случае придется прибегнуть к редактированию реестра.

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

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

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


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

Данное руководство ориентировано на квалифицированных специалистов и описывает детали процесса использования тепловычислителей ВКТ-7 компании «ТЕПЛОКОМ» совместно с GSM-модемами компании iRZ. В качестве стандарта связи используется CSD. Для примера взяты модемы MC52PU / MC52iWDT.

Перед использованием модемов их необходимо настроить. Настроить модемы можно автоматически с помощью специальной программы (InitModem, Test Modem), либо вручную с помощью программы HyperTerminal.

Автоматическая настройка модемов

Если вы используете InitModem, перед началом настройки, установите программу и запустите ее:

Настройка gsm модемов iRZ MC52 в программе InitModem (Теплоком)

Изображение 1. Настройка gsm модемов iRZ MC52 в программе «InitModem» (Теплоком)
  1. Установите номер COM-порта (это можно узнать в [Диспетчере устройств ➤ ­Порты COM и LTP»] номер COM-порта, используемого модемом).
  2. Выберите тип модема («Cinterion MC52i») и место подключения («Подключение к прибору»).
  3. Снимите галочку «Отключить GPRS»;
  4. Нажмите кнопку «Старт!». В процессе выполнения иногда возникает ошибка, достаточно повторить операцию и еще раз, нажать кнопку «Старт!».
  5. Произведите аналогичные действия с модемом, подключенным к компьютеру, выбрав «Подключение к компьютеру».

После этого, можно закрыть программу. 

Настройка модемов вручную

Настройка модема вручную производится с помощью АТ-команд через программу HyperTerminal. Можно воспользоваться стандартным HyperTerminal, имеющимся в Windows XP «Пуск ➤ Все программы ➤ Стандартные ➤ Связь ➤ HyperTerminal», или установить программу терминала отдельно. Вне зависимости от используемого вида программы, параметры HyperTerminal следует установить следующие:

Параметр Значение
Скорость 9600 бит/сек
Номер COM-порта  Узнать в [Диспетчере устройств ➤ «Порты COM и LPT»] номер COM-порта, используемого модемом
Число бит данных 8
Паритет (четность) нет
Число стоповых бит 1
Таблица 1. Параметры «HyperTerminal»

Далее приведены АТ-команды для настройки модема:

Команды настройки ведущего модема (с его стороны будет инициализироваться звонок):
at+ipr=9600 (скорость обмена по COM-порту)
at&d0 (игнорирование DTR)
ate0 (отключение эха)
at&w (сохранение)
at^smso (выключение)
Таблица 2. АТ-команды для настройки модема
Команды настройки ведомого модема (он подключается к счётчику, SIM-карта должна быть установлена): 
at+ipr=9600 (скорость обмена по COM-порту)
at^scfg=»GPRS/ATS0/withAttach»,”off” (отключение автоответа для GPRS)
ats0=1 (автоответ)
at&c0 (определение DCD режима)
at&d0 (игнорирование DTR)
at+cbst=71,0,1
ate0 (отключение эха)
at&w (сохранение)
at^smso (выключение)
Таблица 3.

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

Общая схема соединения тепловычислителя ВКТ-7 с пунктом диспетчеризации представлена на рисунке:

Общая схема соединения модема iRZ и вычислителя ВКТ-7

Изображение 2. Общая схема соединения модема iRZ и вычислителя ВКТ-7

Соединение модема и вычислителя тепловой энергии производится по интерфейсу RS232. Опрос ВКТ-7 производится по CSD-каналу. Питание ведущего модема осуществляется через USB 2.0. Питание ведомого модема осуществляется через блок питания, присоединяемый по разъёму TJ-6P6C.

Настройки тепловычислителя рекомендуется оставить по умолчанию. Настройка интерфейса ВКТ-7:

  • ВУ – 0
  • СО – 3

☞ Подробнее о настройке тепловычислителя ВКТ-7 на работу с внешними устройствами для передачи данных энергопотребления можно прочитать в статьях — Подключение внешних устройств к ВКТ-7 и Настройка ВКТ-7 для снятия показаний.

  • ВКТ-7-01 вычислитель количества теплоты, Теплоком

    Продаваемый товар

  • ВКТ-7-02 вычислитель количества теплоты, Теплоком

    Продаваемый товар

  • ВКТ-7-03 вычислитель количества теплоты, Теплоком

    Продаваемый товар

  • ВКТ-7-04 вычислитель количества теплоты, Теплоком

    Продаваемый товар

Опрос вычислителя ВКТ-7

Для опроса тепловычислителя ВКТ-7 производители предоставляют программу «Vkt7Easy2.exe», которая позволяет удаленно опросить тепловычислители по каналу CSD. Перед использованием программу необходимо предварительно установить.

Подключите модемы к диспетчерскому пункту и к тепловычислителю. Подайте питание, дождитесь регистрации модемов (мигание светодиода станет кратковременным). Запустите программу «Vkt7Easy2.exe», при запуске программы на экран выводится главное окно программы:

Главное окно программы ВКТ-7 Easy2

Изображение 3. Главное окно программы ВКТ-7 Easy2

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

Окно «База узлов учета» программы ВКТ7Easy2

Изображение 4. Окно «База узлов учета» программы ВКТ7Easy2

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

название узла учета вводится произвольное название (название узла учета не должно содержать специальных символов: / : * ? » < > |)
тип соединения выбирается из списка
телефон номер SIM-карты, установленной на удаленном модеме
Таблица 4. Параметры узла учета

Редактирование свойств узла учета в программе ВКТ7Easy2

Изображение 5. Редактирование свойств узла учета в программе ВКТ7 Easy2

После ввода параметров узла учета нажмите кнопку «ОК». В окне «База узлов учета» должен появиться вводимый узел учета.

Нажмите кнопку «ОК» в появившемся окне сообщения, на экран выведется окно «Содержимое узла учета NNN»:

Содержимое узла учета в программе ВКТ7Easy2

Изображение 6. Содержимое узла учета в программе VKT7 Easy2

Для создания записи о новом приборе, нажмите кнопку «Добавить». В окне свойств прибора введите параметры:

  • тип интерфейса;
  • сетевой номер (вычислителя).

Редактирование записи о новом приборе учета в программе ВКТ7Easy2

Изображение 7. Редактирование записи о новом приборе учета в программе ВКТ7Easy2

После ввода свойств прибора нажмите кнопку «ОК». В окне «Содержимое узла учета…» должно отобразиться:

Содержимое узла учета в ВКТ-7 Easy2

Изображение 8. Содержимое узла учета в ВКТ-7 Easy2

Уберите флажок в окне «Автоматически устанавливать связь после выбора узла». Нажмите кнопку «ОК», на экран вернётся главное окно программы.

Далее необходимо настроить канал связи. Параметры канала связи устанавливаются командой «Настройки ➤ Канал связи» или функциональной клавишей F5.

В раскрывшемся окне установите параметры:

  • номер СOM-порта,
  • скорость передачи данных,
  • количество попыток запросов и интервал между ними,
  • параметры настройки местного модема (только для модемного соединения),
  • аппаратный тайм-аут чтения (только для модемного соединения).

Настройка канала связи с gsm модемом в программе ВКТ-7 Easy2

Изображение 9. Настройка канала связи с gsm модемом в программе ВКТ-7 Easy2

Нажмите кнопку «ОК». Далее можно приступить к опросу счетчика. Нажмите кнопку «Уст. связь».

☞ Удостоверьтесь в том, что HyperTerminal или иные программы настройки модемов отключены и нужный COM-порт свободен. Иначе появится ошибка с сообщением об использовании COM-порта другим приложением.

Программа установит связь с вычислителем и считает его настройки. Процесс установления связи отображается в строке состояния в нижней части главного окна программы. Дождитесь состояния «Связь установлена».

Далее можно переходить к формированию отчетов. В меню «Отчет» выбрать «Текущие» или «Текущие итоговые». На экране появятся окна установки параметров чтения: 

Формирование отчета в программе ВКТ 7 Easy2

Изображение 10. Формирование отчета в программе ВКТ 7 Easy2

Выберите номер теплового ввода и период опроса. Нажмите кнопку «ОК». На экран будет выведен отчет о текущих параметрах, обновляемый с выбранным периодом:

Сформированный отчет о параметрах теплоснабжения в программе ВКТ 7 Easy2

Изображение 11. Сформированный отчет о параметрах теплоснабжения в программе ВКТ 7 Easy2

Для прекращения связи с вычислителем нажмите кнопку «Раз. связь».

Видео-инструкция

В видео пошагово описаны этапы настройки тепловычислителя ВКТ7 и модемов iRZ, что позволит самостоятельно настроить систему сбора данных по беспроводному каналу GSM с территориально-распределенных тепловычислителей.

Подробная видео инструкция по настройке и опросу тепловычислителя ВКТ7 производства компании «НПФ Теплоком» с помощью модемов iRZ.

☞ Рекомендуем ознакомиться с дополнительной информацией по данному вопросу:

  • Устранение проблем совместимости модемов iRZ

ЛЭРС УЧЁТ — Современная автоматизированная система диспетчеризации и сбора архивных данных с приборов учета

ЛЭРС УЧЁТ — Современная автоматизированная система диспетчеризации и сбора архивных данных с приборов учета
  • Поддержка более 370 типов приборов учета тепла, воды, электроэнергии и др.
  • Автоматический и ручной опрос GSM/GPRS модемов, УСПД
  • АРМ + WEB-интерфейс + мобильное приложение (Android / iOS)
  • Таблицы, графики, отчеты, карты, мнемосхема, журналы работ, профиль мощности, анализ данных и НС
  • Без абонентской платы, бесплатная лицензия

Если вы пытаетесь открыть COM-порт в приложении, но получаете сообщение об ошибке “COM-порт занят другим приложением”, то это означает, что порт уже используется другим процессом или приложением.

Если вы знаете, какое приложение использует порт, то вы можете попробовать закрыть это приложение, чтобы освободить порт. Если не знаете, какое приложение использует порт, то можно попробовать использовать диспетчер устройств Windows, чтобы узнать, какое устройство использует порт.

Если порт используется системным процессом или службой Windows, то его можно освободить, остановив соответствующий процесс или службу. Для этого нужно выполнить следующие действия:

  1. Откройте диспетчер задач (нажмите Ctrl+Shift+Esc).
  2. Перейдите на вкладку “Службы”.
  3. Найдите службу, которая использует COM-порт, и остановите ее (щелкните правой кнопкой мыши на службе и выберите “Остановить”).
  4. Попробуйте открыть порт снова в вашем приложении.

Если это не помогло, то возможно, что порт используется другим процессом или приложением, которое вы не можете закрыть. В таком случае можно попробовать перезагрузить компьютер, чтобы освободить порт.

ЛЭРС УЧЁТ

Загрузка…

Сейчас повторял ошибку предварительно удалив файлы из папок Log и BugReport.
В папку BugReport не записалось ничего .. в папке Log думаю наибольший интерес вызывают строки:

13:14:41.882 [6064] TQueueTasks.OnDataChange
13:14:41.882 [6064] TQueueTasks.OnDataChange — OK, Result=OK (0x0), dwTransid=0, hGroup=0, hrMasterquality=0, hrMastererror=0, dwCount=4, phClientItems=([4] 253, 254, 255, 256), pvValues=([4] 1, 5, 2, 8), pwQualities=([4] 192, 192, 192, 192), pftTimeStamps=([4] 16.01.17 09:44:05, 16.01.17 09:44:05, 16.01.17 09:44:05, 16.01.17 09:44:05), ItemIDs=([4] UniversContr.Globs.Adres, UniversContr.Globs.Speed, UniversContr.Globs.GlobMode, UniversContr.Globs.TypeIn)
13:14:43.375 [7692] [ComPort] Инициализации СОМ порта — OK, Порт=COM10
13:14:43.759 [7692] [ComPort] Ошибка СОМ порта, Порт=COM10
13:14:43.769 [6064] TQueueTasks.OnDataChange
13:14:43.769 [6064] TQueueTasks.OnDataChange — OK, Result=OK (0x0), dwTransid=0, hGroup=0, hrMasterquality=0, hrMastererror=0, dwCount=4, phClientItems=([4] 253, 254, 255, 256), pvValues=([4] 1, 5, 2, 8), pwQualities=([4] 280, 280, 280, 280), pftTimeStamps=([4] 16.01.17 13:14:43, 16.01.17 13:14:43, 16.01.17 13:14:43, 16.01.17 13:14:43), ItemIDs=([4] UniversContr.Globs.Adres, UniversContr.Globs.Speed, UniversContr.Globs.GlobMode, UniversContr.Globs.TypeIn)
13:14:54.931 [7692] [ComPort] СОМ порт недоступен, Порт=COM10
13:14:54.932 [7692] Ошибка инициализации порта (COM10 Адрес:1)
13:15:05.608 [7692] [ComPort] СОМ порт недоступен, Порт=COM10

тут видно, что сначала инициализация порта проходит «ОК» и сразу через 400 мс Ошибка COM порта. с чем это связано? хз.
сейчас видео скину как это выглядит.

Когда вы подключаете к компьютеру новое 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
  • Определяем процесс, который использует COM в Windows
  • Сброс назначенных COM портов Windows через реестр

Изменить номер COM порта устройства в Windows

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

  1. Откройте диспетчер устройств (Device Manager) командой devmgmt.msc;
  2. В меню выберите View->Show Hidden Devices;Отобразить скрытые устройства
  3. Затем разверните Ports (COM & LPT) и найдите в списке устройство;
  4. Перейдите на вкладку Port Settings и нажмите кнопку Advanced;
  5. Текущий номер COM порта, назначенный устройству указан в поле COM Port Number;
  6. Чтобы изменить его, раскройте выпадающий список и выберите номер COMпорта, который хотите задать.Изменить номер назначенного COM порта

Но чаще всего изменить номер COM порт на другой не получится, так как все «низкие» COM порт уже используются (in use);

  1. В этом случае нужно попробовать удалить резервацию COM порта за другим устройством. В ветке Ports (COM & LPT) найдите которому назначен нужный вам номер COM порта (бледная иконка означает, что данный COM порт назначен, но в сейчас это устройство не подключено);
  2. Щелкните по нему ПКМ и выберите Uninstall;Удаление отключенного COM устройства
  3. Теперь вы можете назначить освобожденный COM порт другому устройству. Еще раз откройте свойства вашего устройство, перейдите на вкладку Port Settings -> Advanced. Задайте свободный номер COM порта для вашего устройства.Смена 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

powershell: получить название процессов и служб использующих COM порты в windows

Имя службы данного COM порта указано в столбце Service. Например, для COM2 это Serial. Теперь нужно запустить Process Explorer с правами администратора и выбрать в меню Find -> Find Handle or DLL. В строке Hangde or DLL substring введите значение Service, полученное ранее. В нашем примере это
Serial
.

Process Explorer должен показать процесс, который использует сейчас ваш COM порт. Чтобы освободить COM порт, завершите процесс или программу.

Process Explorer - ищем процесс или программу, которая используется com serial порт в windows

Сброс назначенных COM портов Windows через реестр

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

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

    Важно! Настоятельно рекомендуем предварительно создать резервную копию данной ветки реестра (File -> Export). В том случае, если что-то пойдет не так, вы сможете вернуться к первоначальной конфигурации COM портов.

    COM Name Arbiter

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

    Важно! Будьте предельно внимательными, ни в коем случае не добавьте в этот параметр дополнительные байт, иначе система может начать падать в BSOD.

  3. Если нужно полностью сбросить все привязки COM, измените значение ключа ComDB на 0.Сбросить привязки COM портов

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

  4. В ветке HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPorts содержится список назначенных COM портов. Все ненужные порты можно удалить (в нашем примере мы оставим только COM3 и удалим остальные);список COM портов в реестре
  5. Отключите все оборудование и перезагрузите Windows;
  6. После перезагрузки включите оборудование в нужном порядке (переустановите конверторы USB-to-serial и т.д.). Все обнаруженные COM-порты автоматически определяться системой и им будут последовательно выделены номера COM портов.

Также вы можете использовать следующие две бесплатные утилиты для очистки занятых (In Use) COM портов:

  • COM Name Arbiter Tool – утилита для освобождения занятых COM портов. Запустите утилиту с правами администратора, выберите COM порты, которые вы хотите освободить и нажмите Clear unused Reservations и Remove non-present devices;утилита COM Name Arbiter для очистки занятых COM портов в Windows
  • Device Cleanup Tool – утилита используется для поиска в реестре информации о ранее подключенных устройств (в ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnum) и удаления неиспользуемых устройств и очистки резерваций COM портов.

Понравилась статья? Поделить с друзьями:
  • Ошибка инициализации miles sound system modern warfare 3
  • Ошибка инициализации com порта lectus
  • Ошибка инициализации microsoft net framework
  • Ошибка инициализации cogen drm rpg maker vx ace
  • Ошибка инициализации logitech g hub