+7(962)919-86-60
Тирика-Магазин

Как проверить, какая именно программа работает с COM-портом компьютера

Сотрудники, офисы и COM-порты. Краткое введение в проблему

Иногда случается так, что при подключении сканера штрихкодов к программе Тирика-Магазин программа показывает сообщение об ошибке: Не могу открыть порт сканера штрихкодов: Отказано в доступе. Давайте разберемся, отчего такое может случиться.

С точки зрения Windows COM-порт, как и любой файл, флешка и т.п. является ресурсом. Любая программа, в т.ч. и сама Windows, может попросить у Windows доступ к какому-то ресурсу с определенными правами, и Windows может либо предоставить, либо не предоставить программе искомый доступ. Близкой аналогией здесь будет, наверное, офис с большим количеством комнат и кабинетов (ресурсов) и работающих в них сотрудников (программ). Если сотруднику для, например, переговоров с крупным клиентом потребуется отдельная комната, он попросит у секретаря организации дать ему ключ от этой комнаты и более никого туда не пускать до окончания переговоров. Если другой сотрудник попросит после этого у секретаря ключ от той же комнаты, ему будет отказано в доступе.

Точно так же дело обстоит и в мире программ. Если какой-то программе необходимо поработать с COM-портом, причем поработать так, чтобы ей никто в этом не мешал, программа просит Windows предоставить ей доступ к COM-порту и более никому этого доступа не предоставлять. Если после этого другая программа (например, программа Тирика-магазин) попросит у Windows доступа к (уже занятому) COM-порту, ей будет отказано в доступе.

Разумеется, это не единственная причина, по которой программе может быть отказано в доступе к COM-порту. Возвращаясь к нашей аналогии с офисом, сотруднику может быть отказано в доступе к какой-то комнате не только потому, что она занята другим сотрудником, но и потому, что эта комната, например, не существует или эта комната - кабинет директора. Однако при возникновении такой ситуации (программа Тирика-Магазин показывает на экране сообщение "Не могу открыть порт сканера штрихкодов: отказано в доступе") бывает нелишним проверить, что ни одна сторонняя программа не использует уже COM-порт в эксклюзивном режиме (сотрудник не занял комнату, на которую мы претендуем).

Так как все-таки проверить, какая именно программа работает с COM-портом компьютера

Для этого нам нужно скачать и установить на компьютер специальную программу, называемую Process Explorer. Вообще, процессом в Windows называют запущенную и работающую программу, так что название этой программы можно перевести как Исследователь запущенных программ. Пожалуйста, скачайте эту программу и запустите на своем компьютере. Вначале программа предложит вам согласиться с лицензионным соглашением (нужно нажать кнопку Agree, что переводится как Согласен) и потом немедленно покажет вам список запущенных на компьютере процессов:

Установка программы Process Explorer Главное окно программы Process Explorer

В этом окне нажмите, пожалуйста, сочетание клавиш Ctrl+F или выберите пункт меню Find | Find handle or DLL (Поиск | Искать хэндл или динамически подгружаемую библиотеку) для того, чтобы вызвать на экран окно поиска, в этом окне напишите слово Serial и нажмите кнопку Search (Искать). В ответ программа покажет вам список хэндлов (хэндлом в нашем примере про офис будет, наверное, запись о занятии комнаты у секретаря фирмы), в имени которых есть слово Serial ("Последовательный". COM-порты также называются последовательными портами):

Окно поиска программы Process Explorer

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

Кроме того, нам необходимо суметь прочитать то, что нашла нам функция поиска. Вот, например, третья строчка на рисунке выше - это запись о занятии COM-порта или нет? На самом деле это запись совсем о другом событии, но для того, чтобы это понять, нужно быть компьютерным специалистом - а у большинства читающих эту статью совсем другие образование и профессия. Поэтому мы рекомендуем вам просто максимально расширить окно поиска так, чтобы туда поместились все присутствующие в нем строчки и все присутствующие в нем тексты, сделать снимок экрана получившегося окна и прислать этот снимок экрана нам с комментарием типа: Пытаюсь использовать программу Тирика-Магазин совместо со сканером штрихкодов, получаю сообщение об ошибке <тут написать текст сообщения>, снимок окна поиска программы ProcessExplorer прилагаю. Письмо нужно отправлять на .

Как вы понимаете, отсылка нам описанного выше снимка экрана - это не панацея и не волшебный способ исправить любую ошибку в программе - это всего лишь попытка найти программу, занявшую COM-порт. Если эта попытка окажется удачной, это будет означать, что проблема, наверное, будет решена; если же попытка окажется неудачной, то это вообще ничего не означает, так как, например, в списке секретаря эта комната может называться иначе. Но ведь попытка не пытка, как говорил известный исторический персонаж? ;)

Следующая статья: Как ускорить работу программы