Skip to main content

Установка ComSplitter для r_keeper и SmartScanner

Короткая инструкция

Схема работы

Сканер штрихкодов
физический COM-порт, например COM9
        │
        ▼
ComSplitterHub
служба Windows через NSSM
        │
        ▼
hub4com
        │
        ├── виртуальный COM для r_keeper
        │   например COM10
        │
        └── виртуальный COM для SmartScanner
            например COM11

Важно: физический порт сканера указывается только в ComSplitter.
В r_keeper и SmartScanner указываются только виртуальные порты.


Быстрая установка

1. Установить com0com

Запустить установщик com0com. Во время установки снять галочки создания стандартных пар портов. После установки проверить:

"C:\Program Files (x86)\com0com\setupc.exe" list

Желательно, чтобы вывод был пустой.

При установке нужно отказаться от автоматического создания стандартных пар портов. В установщике нужно снять две последние галочки. После установки список com0com-пар должен быть пустым.

2. Скопировать пакет

Скопировать папку: ComSplitter в: C:\UCS\ComSplitter

Проверить, что есть файлы:

C:\UCS\ComSplitter\bin\nssm.exe
C:\UCS\ComSplitter\bin\hub4com.exe
3. Узнать физический порт сканера

Открыть: Диспетчер устройств → Порты COM и LPT

Найти сканер.

Пример: USB Serial Port (COM9)

Значит физический порт сканера: COM9

4. Запустить автонастройку

Запустить от имени администратора: C:\UCS\ComSplitter\scripts\01-auto-configure.cmd

Когда скрипт спросит порт сканера, ввести физический порт, например: COM9

Когда спросит подтверждение, ввести: YES

После выполнения откроется файл: C:\UCS\ComSplitter\config\ComSplitter.ports.txt

В нем будут указаны порты для программ.

Пример:

Physical scanner port:
COM9

Set in r_keeper:
COM10

Set in SmartScanner / WriteOffClient:
COM11
5. Установить службу

Запустить от имени администратора: C:\UCS\ComSplitter\scripts\03-install-service.cmd

После установки проверить: C:\UCS\ComSplitter\scripts\check.cmd

Нормально, если:

ComSplitterHub = SERVICE_RUNNING
hub4com.exe запущен
hub4com.err.log пустой или без ошибок

6. Прописать порты в программах

Открыть: C:\UCS\ComSplitter\config\ComSplitter.ports.txt

Указать:

r_keeper → порт из строки “Set in r_keeper”
SmartScanner → порт из строки “Set in SmartScanner / WriteOffClient”

Физический порт сканера в программах не указывать.

Пример:

COM9  — физический сканер, в программах не указывать
COM10 — указать в r_keeper
COM11 — указать в SmartScanner

7. Перезагрузить кассу

После перезагрузки запустить: C:\UCS\ComSplitter\scripts\check.cmd

Проверить, что служба запущена.

Если изменился физический порт сканера

Например, сканер был на COM9, а стал COM15.

Быстрый вариант

Остановить службу: C:\UCS\ComSplitter\scripts\stop.cmd

Открыть конфиг: notepad C:\UCS\ComSplitter\config\ComSplitter.config.cmd

Заменить:

set PHYSICAL_COM=COM9
set PHYSICAL_PORT=\\.\COM9

на новый порт, например:

set PHYSICAL_COM=COM15
set PHYSICAL_PORT=\\.\COM15

Сохранить файл.

Переустановить службу: C:\UCS\ComSplitter\scripts\03-install-service.cmd

Проверить: C:\UCS\ComSplitter\scripts\check.cmd

Порты r_keeper и SmartScanner при этом обычно не меняются.

Основные команды

Проверка: C:\UCS\ComSplitter\scripts\check.cmd

Остановить: C:\UCS\ComSplitter\scripts\stop.cmd

Запустить: C:\UCS\ComSplitter\scripts\start.cmd

Удалить службу: C:\UCS\ComSplitter\scripts\uninstall.cmd

Расширенная инструкция

Назначение

ComSplitter используется, когда один сканер штрихкодов в режиме COM-порта должен работать одновременно с двумя программами:

Обычный COM-порт не может стабильно использоваться двумя приложениями одновременно: одно приложение может занять порт монопольно, и второе приложение не сможет его открыть.

Для решения используется схема:

физический COM-порт сканера
        ↓
hub4com
        ↓
виртуальный COM-порт для r_keeper
виртуальный COM-порт для SmartScanner

В старой схеме hub4com запускался bat-файлом из автозагрузки. Это неудобно: пользователь мог закрыть консольное окно, запуск мог не сработать или произойти слишком поздно. В новой схеме hub4com запускается как служба Windows через NSSM. 


1. Что входит в пакет

Папка установки:

C:\UCS\ComSplitter

Структура:

C:\UCS\ComSplitter\
│
├─ bin\
│  ├─ nssm.exe
│  └─ hub4com.exe
│
├─ config\
│  ├─ ComSplitter.config.cmd
│  └─ ComSplitter.ports.txt
│
├─ scripts\
│  ├─ 01-auto-configure.cmd
│  ├─ 03-install-service.cmd
│  ├─ check.cmd
│  ├─ start.cmd
│  ├─ stop.cmd
│  └─ uninstall.cmd
│
└─ logs\

Назначение основных файлов:

01-auto-configure.cmd
создает виртуальные пары com0com, определяет выданные COM-порты и формирует конфиг.

03-install-service.cmd
устанавливает службу ComSplitterHub через NSSM.

check.cmd
проверяет состояние службы, процесс hub4com, COM-порты и лог ошибок.

start.cmd
запускает службу вручную.

stop.cmd
останавливает службу вручную.

uninstall.cmd
удаляет службу ComSplitterHub, но не удаляет com0com и виртуальные порты.

ComSplitter.ports.txt
памятка: какой порт указать в r_keeper, какой в SmartScanner.

2. Установка com0com

Сначала установить com0com обычным установщиком.

При установке нужно отказаться от автоматического создания стандартных пар портов. В установщике нужно снять две последние галочки. После установки список com0com-пар должен быть пустым.

image-1779751162216.png

Проверка:

Запустить 
C:\Program Files (x86)\com0com\setupc.exe
Набрать list

Если вывод пустой — можно продолжать.

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


3. Подготовка пакета

Скопировать папку:

ComSplitter

в:

C:\UCS\ComSplitter

В папке должны быть:

C:\UCS\ComSplitter\bin\nssm.exe
C:\UCS\ComSplitter\bin\hub4com.exe

Для 64-битных систем используется nssm.exe из папки _distr\NSSM\win64.


4. Определение физического порта сканера

Перед настройкой нужно определить, на каком COM-порту находится сам сканер.

Можно посмотреть в Диспетчере устройств:

Порты COM и LPT

Например:

YJ4600 (COM9)
USB Serial Port (COM15)

В этом случае физический порт сканера:

COM9

Важно: физический порт сканера потом не указывается ни в r_keeper, ни в SmartScanner. Его будет использовать только hub4com.


5. Автоматическая настройка виртуальных портов

Запустить от имени администратора:

C:\UCS\ComSplitter\scripts\01-auto-configure.cmd

Скрипт покажет список COM-портов и спросит физический порт сканера.

image-1779751791407.png

Пример:

Enter physical scanner COM port, for example COM9:

Ввести порт сканера, например:

COM15

Затем скрипт попросит подтверждение на создание двух виртуальных пар:

Type YES to continue:

Ввести:

YES

Скрипт создаст две пары com0com, подождет, пока Windows назначит реальные COM-номера, и сформирует два файла:

C:\UCS\ComSplitter\config\ComSplitter.config.cmd
C:\UCS\ComSplitter\config\ComSplitter.ports.txt

После выполнения автоматически откроется файл:

ComSplitter.ports.txt

Пример содержимого:

COM Splitter ports

Physical scanner port:
com15

Set in r_keeper:
COM9

Set in SmartScanner / WriteOffClient:
COM14

Internal com0com ports for hub4com:
r_keeper side: CNCB0
SmartScanner side: CNCB1

hub4com command will use:
\\.\com15 \\.\CNCB0 \\.\CNCB1

6. Установка службы

После успешной настройки запустить от имени администратора:

C:\UCS\ComSplitter\scripts\03-install-service.cmd

Скрипт установит службу:

ComSplitterHub

Служба будет запускать hub4com.exe автоматически при старте Windows.

Проверить состояние:

C:\UCS\ComSplitter\scripts\check.cmd

Нормальное состояние:

ComSplitterHub — SERVICE_RUNNING
hub4com.exe — есть в списке процессов
hub4com.err.log — пустой или без ошибок открытия портов

7. Настройка r_keeper и SmartScanner

Открыть файл:

C:\UCS\ComSplitter\config\ComSplitter.ports.txt

В программах указать порты из этого файла.

Пример:

r_keeper:
COM10

SmartScanner / WriteOffClient:
COM11

Физический порт сканера, например COM9, в этих программах указывать не нужно.

Правильная схема:

COM9 — физический порт сканера, используется только hub4com

COM10 — указывается в r_keeper

COM11 — указывается в SmartScanner / WriteOffClient

8. Проверка после перезагрузки

После установки желательно перезагрузить кассу.

После перезагрузки запустить:

C:\UCS\ComSplitter\scripts\check.cmd

Проверить:

служба ComSplitterHub запущена;
процесс hub4com.exe работает;
виртуальные COM-порты видны в Windows;
в hub4com.err.log нет ошибок.

9. Если изменился физический порт сканера

Физический порт может измениться, если:

сканер подключили в другой USB-порт;
Windows переназначила номер COM-порта;
переустановили драйвер;
произошел сбой устройств в Windows;
сканер заменили на другой.

Например, раньше сканер был:

COM9

а стал:

COM15

В этом случае не обязательно пересоздавать виртуальные пары. Обычно достаточно изменить физический порт в конфиге службы.

Вариант 1. Быстрое исправление без пересоздания виртуальных портов

  1. Остановить службу:

C:\UCS\ComSplitter\scripts\stop.cmd
  1. Открыть конфиг:

notepad C:\UCS\ComSplitter\config\ComSplitter.config.cmd
  1. Найти строки:

set PHYSICAL_COM=COM9
set PHYSICAL_PORT=\\.\COM9
  1. Заменить на новый порт, например:

set PHYSICAL_COM=COM15
set PHYSICAL_PORT=\\.\COM15
  1. Сохранить файл.

  2. Переустановить службу, чтобы NSSM получил новые параметры запуска:

C:\UCS\ComSplitter\scripts\03-install-service.cmd
  1. Проверить:

C:\UCS\ComSplitter\scripts\check.cmd
  1. В файле памятки вручную обновить физический порт:

notepad C:\UCS\ComSplitter\config\ComSplitter.ports.txt

Важно: порты для r_keeper и SmartScanner при этом обычно не меняются. Например, они как были COM10 и COM11, так и остаются.

Вариант 2. Полная перенастройка

Полная перенастройка нужна, если:

сломались или пропали виртуальные порты;
com0com переустановили;
нужно создать виртуальные пары заново;
в ComSplitter.ports.txt пустые или неправильные значения;
специалист не уверен, какие пары сейчас используются.

Порядок:

  1. Остановить службу:

C:\UCS\ComSplitter\scripts\stop.cmd
  1. Удалить службу:

C:\UCS\ComSplitter\scripts\uninstall.cmd
  1. Посмотреть текущие пары:

"C:\Program Files (x86)\com0com\setupc.exe" list
  1. Если используются только пары ComSplitter, удалить их:

"C:\Program Files (x86)\com0com\setupc.exe" remove 0
"C:\Program Files (x86)\com0com\setupc.exe" remove 1
  1. Проверить, что список пустой:

"C:\Program Files (x86)\com0com\setupc.exe" list
  1. Запустить заново:

C:\UCS\ComSplitter\scripts\01-auto-configure.cmd
  1. Ввести новый физический порт сканера.

  2. Установить службу:

C:\UCS\ComSplitter\scripts\03-install-service.cmd
  1. Открыть:

C:\UCS\ComSplitter\config\ComSplitter.ports.txt
  1. Прописать новые порты в r_keeper и SmartScanner.


10. Нужно ли обязательно использовать C:\UCS\ComSplitter

Технически — нет, не обязательно.

Но в текущей версии пакета путь:

C:\UCS\ComSplitter

зашит в скриптах и конфиге. Поэтому для простоты установки другими специалистами лучше использовать именно этот путь.

Если установить пакет в другую папку, например:

D:\Tools\ComSplitter

придется менять пути в нескольких местах:

01-auto-configure.cmd
03-install-service.cmd
check.cmd
start.cmd
stop.cmd
uninstall.cmd
ComSplitter.config.cmd

Поэтому для стандартной инструкции рекомендуется:

использовать только C:\UCS\ComSplitter

Это уменьшает вероятность ошибки и упрощает поддержку.

В будущем можно сделать более переносимую версию скриптов, где путь определяется автоматически от расположения самого .cmd файла. Тогда пакет можно будет класть почти в любую папку. Но текущий рабочий вариант лучше зафиксировать на одном стандартном пути.


11. Типовые команды обслуживания

Проверить состояние:

C:\UCS\ComSplitter\scripts\check.cmd

Остановить службу:

C:\UCS\ComSplitter\scripts\stop.cmd

Запустить службу:

C:\UCS\ComSplitter\scripts\start.cmd

Удалить службу:

C:\UCS\ComSplitter\scripts\uninstall.cmd

Посмотреть пары com0com:

"C:\Program Files (x86)\com0com\setupc.exe" list

Посмотреть COM-порты Windows:

wmic path Win32_SerialPort get DeviceID,Name

12. Важные замечания

Не указывать физический порт сканера в r_keeper и SmartScanner. Физический порт должен открывать только hub4com.

Если r_keeper или SmartScanner настроить на физический порт сканера, они могут занять его раньше службы, и схема работать не будет.

Если в ComSplitter.ports.txt пустые значения, нужно проверить файл:

C:\UCS\ComSplitter\logs\com0com-after-auto-configure.txt

Если в нем уже появились реальные RealPortName=COM..., можно повторно запустить 01-auto-configure.cmd после удаления созданных пар. На Windows 7 назначение COM-номеров иногда занимает больше времени.

После установки службы желательно перезагрузить кассу и проверить, что ComSplitterHub запускается автоматически.