ECRService: различия между версиями

Материал из CUSTOM KKT WIKI
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 106: Строка 106:


== Список изменений ==
== Список изменений ==
'''0.04.0.36'''
* Исправлены ошибки переподключения к ККТ
* В настройках добавлен таймаут ожидания подтверждения от ККТ 0x06 <ACK> или 0x15 <NAK>, <DeviceResponseTimeoutMs>5000</DeviceResponseTimeoutMs> - по умолчанию 5000 мс. Если в это время не получен ответ от ККТ, будет производиться попытка переподключения в соответствии с заданными настройками
'''0.04.0.36'''
'''0.04.0.36'''
* Исправлены ошибки приводящие к остановке службы
* Исправлены ошибки приводящие к остановке службы

Версия от 12:59, 3 марта 2026

Описание службы "ECRService"

ECRService
ECRService

Основное назначение программы ECRService - обеспечение подключения нескольких клиентских приложений к одной ККТ Custom.

По сути ECRService является шлюзом маршрутизаторам, который принимает сообщения от управляющего ПО, передает их в неизменном виде в ККТ, затем получает от ККТ ответ и передает его в неизменном виде в управляющее ПО.

Управляющее ПО <-> ECRService <-> ККТ

При запуске ECRService инициализирует локальный сервер на заданном в настройках порту.

Считывает настройки из файла конфигурации и устанавливает соединение с ККТ. В случае, если подключение установить не удается,

ECRService повторяет попытку подключения с заданным интервалом.

Описание параметров подключения:

<FormatVersion>1.0</FormatVersion>  - формат (версия) файла конфигурации
 	<ListeningPort>8000</ListeningPort> - порт сервера для входящих подключений на котором будет работать локальный сервер службы (шлюз)
 	<Connections>
		<!-- Список подключаемых ККТ	
 			 Id - идентификатор ККТ
 			 Type - Канал связи с ККТ: 
 				- Network - сеть Ethernet (подключение по IP-адресу)
 				- Serial - Com-порт
 			Path - путь подключения:
 				- для Network: IP-адрес:Порт
 				- для Serial: COM-порт:скорость
 			 ReleasePort - true/false: удерживать постоянное соединение с ККТ = false, закрывать соединение после каждой команды = true
 			 Reconnect - время между попытками переподключения к ККТ в сек, 0 = не переподключаться
 		-->
 		<!--Connection Id="0" Type="Network" Path="192.168.0.89:9100" ReleasePort="false" Reconnect="2"/-->
 		<Connection Id="0" Type="Serial" Path="COM22:115200" ReleasePort="false" Reconnect="2"/>
 	</Connections>
 	<Debug>true</Debug> - режим отладки
 	<!-- Уровень логирования. Варианты: Verbose, Debug, Information, Warning, Error, Fatal 
 	При стандартной установке рекомендуется вариант - Information -->
 	<LogLevel>Debug</LogLevel>
 </Configuration>

Для подключения к ККТ через ECRService в управляющем ПО необходимо выбрать канал связи с ККТ Ethernet (IP), указать IP-адрес ПК на котором запущена настроенная служба и порт, на котором ECRService принимает входящие соединения (ListeningPort - из настроек).

Служба по умолчанию монопольно подключается к ККТ по заданному интерфейсу, никакие сторонние программы не смогут подключиться на тот же интерфейс ККТ.

Служба устанавливается в директорию:

C:\Program Files (x86)\ECRService

и хранит логи в директории:

C:\ProgramData\ECRService


Последняя актуальная версия, доступная для скачивания:

Системные требования

Это приложение разработано для .NET 8.0 и предоставляет как TCP-сервер (порт по умолчанию 8000), так и последовательное (COM) соединение. Ниже приведены поддерживаемые операционные системы и требования к среде, а также примечания по запуску консольных или сервисных сборок.

Общие требования
- Архитектура: рекомендуется x64
- .NET: .NET 8 Desktop Runtime.
- TCP: Порт прослушивания по умолчанию **8000** (настраивается через `config.xml`); убедитесь, что правила брандмауэра позволяют входящие соединения, если вы запускаете сервер.
- Последовательные порты: Убедитесь, что драйверы устройств для COM-порта установлены, а учетная запись пользователя, запускающая приложение, имеет доступ к последовательному устройству.
- Привилегии: Установка или запуск в качестве службы Windows, как правило, требует административных привилегий. 
              Запуск в консольном режиме требует только разрешений, необходимых для открытия настроенного COM-порта и прослушивания на настроенном TCP-порту.
Windows 11 (Поддерживается)
- Поддерживается: Windows 11 (x64).
- Требование: .NET 8 Desktop Runtime (или независимое приложение).
- Брандмауэр: Добавьте правило для входящего подключения для настроенного порта прослушивания (по умолчанию 8000) или разрешите приложение через брандмауэр при появлении запроса.
Windows 10 (Поддерживается)
- Поддерживается: Windows 10 (версия 1607 / Anniversary Update или более поздняя) для .NET 8.
- Требование: .NET 8 Desktop Runtime (или независимое приложение).
- Примечания: Такие же рекомендации по брандмауэру/драйверам последовательных устройств, как и для Windows 11.
Windows 7 (Поддерживается для .NET 8)
- Поддерживается: Windows 7 SP1 с установленным обновлением платформы для .NET (KB2533623).
- Важно: .NET 8 обеспечивает частичную поддержку на Windows 7. Работоспособность на Windows 7 не гарантируется, и рекомендуется обновить до более новой версии Windows для получения полной поддержки.
- Примечания: Такие же рекомендации по брандмауэру/драйверам последовательных устройств, как и для Windows 11.
Ссылка для скачивания .NET 8 Desktop Runtime
- [Скачать .NET 8 Desktop Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) 
- Выберите "Run apps - Runtime" и скачайте версию для вашей ОС (x64).
Например, для Windows x64 скачайте "Windows x64 Desktop Runtime" https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.23-windows-x64-installer

Настройки службы "ECRService"

- FormatVersion - версия протокола настроек, для дальнейшей совместимости между разными версиями
- ListeningPort - порт на котором запустится служба
- Connection - настройки подключения к ККТ
- Id="0"  - в текущей версии не менять, всегда оставлять "0" - в дальнейшем будет использоваться для работы с несколькими ККТ
- Type - тип подключения, Serial или Network 
- Path - адрес подключения, может быть COM или IP, после ":" задается скорость COM-порта или порт TCP. например, COM22:115200 или 192.1678.0.55:9100
- ReleasePort - "false" - пока не используется, оставлять как есть
- Reconnect - интервал в секундах между попытками переподключения к устройству. Например, если служба запущена до включения ККТ, она будет пытаться каждые N секунд подключиться к ККТ
- LogLevel, уровень логирования, сейчас стоит Debug и пишется весь обмен с устройством, все байты отправленные от клиента к серверу, от сервера к ККТ, и ответ от ККТ к серверу и от сервера к клиенту
start-service.bat - запуск службы
stop-service.bat - остановка службы
Выполнение bat-файла должно производиться с правами администратора

Список изменений

0.04.0.36

  • Исправлены ошибки переподключения к ККТ
  • В настройках добавлен таймаут ожидания подтверждения от ККТ 0x06 <ACK> или 0x15 <NAK>, <DeviceResponseTimeoutMs>5000</DeviceResponseTimeoutMs> - по умолчанию 5000 мс. Если в это время не получен ответ от ККТ, будет производиться попытка переподключения в соответствии с заданными настройками


0.04.0.36

  • Исправлены ошибки приводящие к остановке службы
  • Исправлено переподключение к ККТ при перезагрузке и отключении питания
  • Исправлены ошибки при архивации старых логов


0.04.0.24

  • Описание в ReadMe
  • Добавлены системные требования
  • В архив добавлен установщик .Net8
  • Установка службы в Windows 7


0.04.0.16

  • Создание инсталлятора


0.4.0.7

  • В логи добавлена доп. информация о недоступности ККТ
  • При потере соединения с ККТ (перезагрузка, отключение питание и т.д.) служба начнет попытки переподключения к ККТ с интервалом заданном в параметре Reconnect (интервал в секундах)


0.4.0.5

  • Лог обмена записывается в папку logs, сейчас 1 день = 1 лог файл
  • Лог статуса службы пишется в C:\ProgramData\ECRService\startup.log
  • Добавлен режим запуска в виде службы
  • Добавлены параметры в конфиг файл
https://link.customwiki.ru/ECRService