Установка 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-пар должен быть пустым.
Проверка:
Запустить
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-портов и спросит физический порт сканера.
Пример:
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. Быстрое исправление без пересоздания виртуальных портов
-
Остановить службу:
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
-
Сохранить файл.
-
Переустановить службу, чтобы NSSM получил новые параметры запуска:
C:\UCS\ComSplitter\scripts\03-install-service.cmd
-
Проверить:
C:\UCS\ComSplitter\scripts\check.cmd
-
В файле памятки вручную обновить физический порт:
notepad C:\UCS\ComSplitter\config\ComSplitter.ports.txt
Важно: порты для r_keeper и SmartScanner при этом обычно не меняются. Например, они как были COM10 и COM11, так и остаются.
Вариант 2. Полная перенастройка
Полная перенастройка нужна, если:
сломались или пропали виртуальные порты;
com0com переустановили;
нужно создать виртуальные пары заново;
в ComSplitter.ports.txt пустые или неправильные значения;
специалист не уверен, какие пары сейчас используются.
Порядок:
-
Остановить службу:
C:\UCS\ComSplitter\scripts\stop.cmd
-
Удалить службу:
C:\UCS\ComSplitter\scripts\uninstall.cmd
-
Посмотреть текущие пары:
"C:\Program Files (x86)\com0com\setupc.exe" list
-
Если используются только пары ComSplitter, удалить их:
"C:\Program Files (x86)\com0com\setupc.exe" remove 0
"C:\Program Files (x86)\com0com\setupc.exe" remove 1
-
Проверить, что список пустой:
"C:\Program Files (x86)\com0com\setupc.exe" list
-
Запустить заново:
C:\UCS\ComSplitter\scripts\01-auto-configure.cmd
-
Ввести новый физический порт сканера.
-
Установить службу:
C:\UCS\ComSplitter\scripts\03-install-service.cmd
-
Открыть:
C:\UCS\ComSplitter\config\ComSplitter.ports.txt
-
Прописать новые порты в 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 запускается автоматически.


No Comments