Настройка ScanerComProxy через виртуальный COM

Цель нашей компании - предложение услуг на постоянно высоком качестве обслуживания.

Некоторые программы умеют принимать сканер штрихкодов через COM-порт — последовательный порт. Мы считаем такое подключение сканера самым правильным, поскольку ваша программа получит штрих код от сканера в правильном формате со всеми правильными символами и разделителями.

Так устроено подключение оборудования в 1С и в других программах, в том числе программе «Помощник Маркировки». 

Сложность в том, что COM-порт может открыть только одна программа. Если подключить сканер напрямую к учётной программе, он будет недоступен для остальных программ — из кассы, из кабинета маркетплейса, из 1С, из браузера в системе электронного документооборота. Кроме того, читая порт байтами, программа ждёт служебный разделитель GS (байт 0x1D) настоящим символом, а не нажатием клавиши, и без него не может разобрать код маркировки.

Обе задачи решает связка ScanerComProxy и бесплатного драйвера виртуальных портов com0com. Сканер подключается к ScanerComProxy через COM-порт (для гарантированного получения правильного формата отсканированного штрих-кода маркировки), а учётная программа получает отдельный виртуальный COM-порт, связанный с прокси. Программа видит обычный сканер и получает код с настоящим разделителем GS, а сам сканер при этом остаётся доступен и другим программам. Такое подключение позволяет использовать один правильно настроенный сканер для работы в различных программах и корректно передавать отсканированные коды маркировки.

В этой инструкции в роли учётной программы — «Помощник Маркировки», но подойдёт любая программа, умеющая читать сканер через COM-порт. Отличается только место, где указывается номер порта.

Как это работает

Сканер (например, COM5) остаётся подключённым к ScanerComProxy. Прокси открывает одну сторону виртуальной пары, а учётная программа — вторую. Между собой стороны пары связаны драйвером com0com, поэтому всё, что прокси отдаёт в одну сторону, программа читает из второй.

Сканер (COM5)  →  ScanerComProxy  →  COM6
                                      ⇅  виртуальная пара
Учётная программа  ←  COM7

Программа сама рисует эту схему на вкладке «COM-выход» и подсказывает, какой порт указать в учётной программе. Скорость и формат на виртуальной паре драйвер игнорирует, подбирать их не нужно.

Что понадобится

  • Компьютер с Windows 7 SP1, 8, 8.1, 10 или 11.
  • Сканер 2D-кодов, умеющий работать в режиме эмуляции COM-порта.
  • Программа ScanerComProxy последней версии: диагностика com0com, о которой речь ниже, появилась в версии 1.1.2.
  • Драйвер виртуальных портов com0com.
  • Учётная программа, которая читает сканер через COM-порт (в примере — «Помощник Маркировки»).

Если инструкция покажется очень сложной и Вы самостоятельно не сможете справиться с настройкой сканера - можете обратиться в нашу платную техническую поддержку.

Шаг 1. Установите ScanerComProxy и подключите сканер

Скачайте установщик: ScanerComProxy_setup.zip. Распакуйте архив и запустите установщик, при установке включите автозапуск с Windows.

Переведите сканер в режим COM-порта: в инструкции к сканеру этот режим может называться «USB COM», «USB Virtual COM», «USB CDC» или «USB Serial», переключение обычно выполняется служебным штрихкодом производителя. Проверьте в «Диспетчере устройств» Windows, что в разделе «Порты (COM и LPT)» появился сканер с номером порта, например COM5.

Диспетчер устройств: сканер в разделе «Порты (COM и LPT)»

Затем откройте настройки ScanerComProxy, на вкладке «Сканер» выберите порт сканера и нажмите «Сохранить».

Вкладка «Сканер» с выбранным COM-портом

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

Шаг 2. Установите драйвер com0com

Скачайте com0com только с официальной страницы проекта: sourceforge.net/projects/com0com, файл com0com-3.0.0.0-i386-and-x64-signed.zip. Это драйвер режима ядра, который получает полный доступ к системе, поэтому не используйте сборки со сторонних сайтов.

Распакуйте архив и запустите 64-битный установщик от имени администратора. На шаге выбора компонентов оставьте COM# ↔ COM#, а CNCA0 ↔ CNCB0 снимите: так com0com сам назначит паре обычные номера портов, и переименовывать их вручную не придётся. Завершите установку.

Шаг 3. Проверьте пару портов и при необходимости исправьте номера

Если при установке вы оставили компонент COM# ↔ COM#, номера уже назначены автоматически, например COM6 и COM7. Проверьте в «Диспетчере устройств», что в разделе «Порты (COM и LPT)» появились два порта с подписью «com0com - serial port emulator».

устройства com0com после установки в диспетчере задач

Если номера получились нестандартными (вместо COMx видны имена вида CNCA0/CNCB0), откройте настройки ScanerComProxy, вкладку «COM-выход» и нажмите «Диагностика com0com…»:

  1. Выберите нужную пару в списке — окно покажет обе стороны и их состояние.
  2. Если имена нестандартные, станет доступна кнопка «Исправить назначение». Нажмите её.
  3. Подтвердите запрос прав администратора Windows. Программа поручит com0com назначить паре свободные COM-номера; уже назначенные номера сохраняются.

Изменения применяются сразу, независимо от кнопки «Сохранить» в ScanerComProxy. Перед исправлением закройте программы, которые уже используют эту пару. Если оба COM-номера назначены и видны Windows, окно сообщит, что исправление не требуется.

окно диагностики и исправления пар com0com

Есть и ручной способ — например, если com0com установлен в нестандартную папку и программа не находит setupc.exe. Откройте командную строку от имени администратора, перейдите в папку драйвера и выполните:

cd "C:\Program Files (x86)\com0com"
setupc.exe list
setupc.exe change CNCA0 PortName=COM6
setupc.exe change CNCB0 PortName=COM7

Команда setupc.exe list показывает текущие пары и их имена (CNCA0/CNCB0, а если пара уже была — CNCA1/CNCB1). Лишнюю пару можно удалить командой setupc.exe remove 0.

Важно: «Диагностика com0com» проверяет только имена портов и их видимость в Windows. Она не проверяет передачу данных и не показывает, занят ли порт другой программой — это проверяется обычным сканированием на шаге 7.

Шаг 4. Включите COM-выход в ScanerComProxy

Откройте настройки ScanerComProxy и перейдите на вкладку «COM-выход». Кнопка «Обновить» перечитывает список портов, а «Диагностика com0com…» открывает проверку пар драйвера, о которой шла речь в шаге 3.

  1. Поставьте галочку «Отдавать код в виртуальный COM-порт».
  2. В поле «Наша сторона пары» выберите одну сторону пары, например COM6.
  3. В поле «Суффикс кода» оставьте «Как у сканера» — прокси повторит то окончание, которым закрылась посылка от сканера. При необходимости выберите CR, LF или CRLF.
  4. Оставьте включёнными «Передавать команды программы сканеру (обратный канал)» и «Транслировать сигнальные линии DTR/RTS»: без них часть программ не «увидит» сканер.

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

настройка COM-выхода в программе ScanerCOMProxy

Если выбрать в этом поле порт самого сканера, программа предупредит: «Это порт сканера. Выберите одну из сторон виртуальной пары». Порт сканера занимает сам ScanerComProxy, отдавать в него код не нужно.

Шаг 5. Выберите приёмник «Виртуальный COM» для учётной программы

Включить COM-выход недостаточно: нужно ещё, чтобы ScanerComProxy отправлял в него коды. За это отвечает настройка «Приёмник» в профиле вывода.

Если ScanerComProxy нужен только для этой программы, откройте вкладку «По умолчанию» и выберите приёмник «Виртуальный COM». Тогда коды всегда будут уходить в виртуальный порт.

Если же сканер должен продолжать работать и в других окнах (например, в браузере или в кассе), заведите на вкладке «Правила» отдельное правило на окно учётной программы и в его профиле укажите приёмник «Виртуальный COM». Тогда код уйдёт в COM-порт, когда активно окно этой программы, а в остальных окнах вставится как обычно — с клавиатуры.

Нажмите «ОК» и «Сохранить». Для приёмников «Виртуальный COM» и TCP разделитель GS всегда передаётся настоящим байтом 0x1D, а клавиатурные настройки (политика GS, пауза между символами, завершающая клавиша) к ним не применяются.

настройка вкладки По умолчанию для отправки данных в виртуальный COM порт

Шаг 6. Укажите порт в учётной программе

Откройте в учётной программе настройки подключения сканера и укажите вторую сторону пары — тот порт, который подсказал ScanerComProxy (в нашем примере COM7). Скорость и остальные параметры порта оставьте по умолчанию: на виртуальной паре драйвер их игнорирует.

В «Помощнике Маркировки» это раздел «Профиль и настройки» → «Подключение сканера»: выберите работу через COM-порт и укажите номер COM7.

пример настройки сканера в программе Помощник Маркировки

Важно: в учётной программе указывайте именно сторону пары (COM7), а не порт самого сканера (COM5). Порт сканера занят ScanerComProxy, и программа не сможет его открыть.

Шаг 7. Проверьте

Убедитесь, что значок ScanerComProxy в трее показывает «COM-выход: COM6 открыт». Откройте в учётной программе раздел, где сканируют коды (в «Помощнике Маркировки», например, «Проверка кодов»), и отсканируйте код. Код должен появиться в программе целиком, с настоящими разделителями GS.

Щёлкните правой кнопкой по значку ScanerComProxy: в меню видны состояние COM-выхода, последний код и строка «Маршрут» с названием сработавшего правила.


Если что-то не работает

В трее «COM-выход: COMx не найден». Пара не создана или номера заданы неверно. Откройте «COM-выход» → «Диагностика com0com…»: она покажет найденные пары и подскажет, что делать. Проверьте по «Диспетчеру устройств», что оба порта com0com существуют.

Порты com0com названы нестандартно (CNCA0/CNCB0). Откройте «COM-выход» → «Диагностика com0com…», выберите пару и нажмите «Исправить назначение» (шаг 3).

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

«Это порт сканера. Выберите одну из сторон виртуальной пары». На вкладке «COM-выход» выбран порт физического сканера. Выберите COM6 или COM7.

«Вторую сторону пары определить не удалось». У портов нестандартные имена, или драйвер нестандартный. Нажмите «COM-выход» → «Диагностика com0com…» → «Исправить назначение» (шаг 3). Если com0com установлен в нестандартную папку, посмотрите имя второй стороны командой setupc.exe list и укажите его вручную.

«Диагностика не находит setupc.exe». Драйвер установлен в нестандартную папку. Задайте номера вручную из командной строки (шаг 3) или переустановите com0com в стандартный каталог с компонентом COM# ↔ COM#.

Порт открывается, но коды не приходят. Проверьте, что приёмник «Виртуальный COM» выбран в профиле (шаг 5) и что «Маршрут» в трее указывает на нужное правило. Также убедитесь, что включены «Передавать команды программы сканеру» и «Транслировать сигнальные линии DTR/RTS».

Учётная программа не видит порт. Запустите её заново после создания пары: некоторые программы читают список портов только при старте.

Остальные возможности программы описаны в общей инструкции по настройке ScanerComProxy.

Другие инструкции

Для других программ и площадок у нас есть отдельные пошаговые инструкции:

Нужна помощь?

Мы можем настроить ScanerComProxy, драйвер com0com и сканер для работы с вашей учётной программой удалённо: подключимся к компьютеру, установим драйвер, назначим пару портов и проверим передачу кодов. Оплата по факту результата. Подробнее об услуге: техническая поддержка.

Вопросы и предложения по программе пишите на ca@ucparma.ru или звоните: +7 (342) 2-700-750.


Заказать услугу
Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.
Вернуться к списку