Касса АТОЛ и ЕСМ по RDP: проброс COM-порта на терминальный сервер

Схема, которая встречается чаще, чем кажется: кассовая программа живёт на терминальном сервере, а сама касса подключена к локальному компьютеру продавца. Между ними — сессия удалённого рабочего стола.

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

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

На локальном компьютере: подключённая касса АТОЛ.

На сервере:

  • драйвер ККТ АТОЛ не ниже 10.10.8.24;
  • модуль ЕСМ не ниже 1.6.0.0;
  • Microsoft Visual C++ runtime — обычно ставится инсталлятором драйвера;
  • .NET Framework 4.8 или новее.

Шаг 1. Включить удалённый рабочий стол на сервере

«Настройки» → «Система» → «Удалённый рабочий стол» → включить функцию.

Затем проверьте состояние службы: в оснастке служб она называется «Службы удалённых рабочих столов» (Remote Desktop Services, RDS). Если не запущена — запустите или перезагрузите сервер.

Шаг 2. Пробросить порт с клиента

Это делается в настройках самого подключения, до входа на сервер.

  1. Нажмите Win + R, введите mstsc, нажмите ОК.
  2. В окне подключения нажмите «Показать параметры».
  3. Перейдите на вкладку «Локальные ресурсы».
  4. В блоке «Локальные устройства и ресурсы» нажмите «Подробнее…».
  5. Установите флажок напротив пункта «Порты» и нажмите ОК.
  6. Вернитесь на вкладку «Общие», введите адрес или имя сервера и подключитесь.

Флажок «Порты» — это и есть весь механизм: без него COM-порт кассы в сессию не попадёт, и сервер её просто не увидит.

Шаг 3. Убедиться, что порт пробросился

Находясь в терминальной сессии, откройте командную строку (Win + R, cmd) и выполните:

change port

Команда выведет список проброшенных портов. В нём должен быть COM-порт, к которому касса подключена на локальном компьютере.

Если касса на клиенте висит на COM21, строка будет выглядеть так:

COM21 = \Device\RdpDrPort\;COM21:1\tsclient\COM21

Порта в списке нет — возвращайтесь к шагу 2. Скорее всего, флажок «Порты» не был установлен либо подключение выполнялось со старыми параметрами.

Свойства драйвера ККТ АТОЛ: раскрытый список COM-портов
Проброшенный порт выбирается здесь же, в списке COM-портов свойств драйвера

Шаг 4. Запустить службу gRPC вручную

Главная особенность всей схемы, и без неё дальше ничего не получится.

Автоматический запуск службы помещает её в другую сессию Windows. В терминальной среде это означает, что служба работает, но не видит проброшенных в вашу сессию устройств.

Порядок такой:

  1. Откройте службы и остановите fptr grpc service.
  2. Перейдите в папку C:\Program Files\ATOL\Drivers10\KKT\atol-grpc-service\.
  3. Запустите atol-grpc-service.exe вручную.

В той же папке лежат готовые пакетные файлы start-atol-grpc-service, stop-atol-grpc-service и restart-atol-grpc-service — ими удобно пользоваться при повторных запусках.

Практическое следствие: после перезагрузки сервера или переподключения сессии службу нужно поднимать заново. Это стоит заложить в регламент работы кассира или автоматизировать запуском при входе в сессию.

Шаг 5. Настроить драйвер на сервере

Откройте «Тест драйвера ККТ» на сервере, перейдите в «Свойства».

  • «Адрес ПК для удалённого подключения RPC» — оставить пустым. Это поле для другого сценария, и заполнять его здесь не нужно.
  • Канал связи — COM / VCOM.
  • COM-порт — тот, который пробросился с клиента, из вывода change port.
  • Порт сервера GRPC4041.

Нажмите «Проверка связи». В строке результата должна появиться информация о кассе: модель, заводской номер, версия прошивки и признак фискализации. Примерно так: «АТОЛ 22 v2 Ф, №00109521959529, версия 5.15.102, ФИСК.»

Если связи нет, порядок проверки — в статье про диагностику связи с ККТ.

Дальше — обычная настройка модуля

С этого момента схема ничем не отличается от локальной: открыть смену, зарегистрировать экземпляр модуля, проверить статусы. Полный порядок.

Не забудьте про правило, которое в терминальной среде нарушается особенно легко: драйвер должен быть запущен всю смену. Разрыв сессии RDP посреди дня — это как раз тот случай, когда связь с кассой рвётся и требует повторной инициализации канала. Подробнее — в шести правилах кассового узла.

Порядок проверки, если не заработало

  1. Флажок «Порты» установлен в параметрах подключения?
  2. change port показывает COM-порт кассы?
  3. Служба gRPC запущена вручную, а не автоматически?
  4. Поле «Адрес ПК для удалённого подключения RPC» оставлено пустым?
  5. Указан ли правильный COM-порт в свойствах драйвера — тот, что из вывода команды?
  6. Порт GRPC равен 4041?

Третий пункт закрывает большинство обращений.

Частые вопросы

Работало, после перезагрузки сервера перестало. Служба gRPC поднялась автоматически и оказалась в другой сессии. Остановите и запустите вручную.

Можно ли подключить несколько касс к одному серверу? Да, но это отдельная схема с несколькими экземплярами ТС ПИоТ — разобрана здесь.

Касса подключена по USB, а не по COM. Драйвер АТОЛ создаёт виртуальные COM-порты, так что проброс работает так же. Смотрите, какой порт видит система на клиенте.

Нужно ли что-то устанавливать на клиентском компьютере? Только драйвер устройства, чтобы касса определилась и получила COM-порт. Кассовая программа и модуль живут на сервере.

Почему нельзя просто указать адрес сервера в поле RPC? Это другой сценарий подключения. При пробросе порта касса для сервера выглядит как локальное устройство, и поле должно оставаться пустым.

Коротко

Схема собирается из пяти шагов: включить удалённый рабочий стол на сервере, установить флажок «Порты» в локальных ресурсах подключения, убедиться командой change port, что COM-порт кассы виден в сессии, запустить службу gRPC вручную из папки драйвера, настроить свойства драйвера с пустым полем RPC и портом GRPC 4041. Ручной запуск службы — ключевой момент: автоматический помещает её в другую сессию Windows, где проброшенных устройств нет. После перезагрузки сервера шаг придётся повторить.


Материал носит информационный характер. Сайт atoldriver.ru не является представительством компании АТОЛ или АО «ЕСП» и не оказывает услуг по обслуживанию оборудования.