28 октября 2019

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows)

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows) от компании Eterlogic . Простой пример настройки. Альтернатива стандартному маппингу com портов средствами Windows через RDP.
Всем доброго времени суток.
Столкнулся с проблемой плохой стабильности маппинга com портов через RDP. Казалось бы, все должно работать замечательно, к тому же у клиента всего 4 магазина, стабильный интернет (как на сервере, так и на точках). Но к сожалению, работало все крайне паршиво. Схема классическая, ут 10.3 на терминальном сервере и фискальные регистраторы на клиентах. Все стандартно, настроили фискальники и пробросили com порты стандартными средствами windows. Но работники магазинов стали часто жаловаться на зависания, не возможность пробить чек или на странные магические проблемы частичного пробития чека или страшного слова "Драйвер ФР не загружен". Все эта ситуация мне совершенно не нравилась, и я решил реализовать проброс com портов через интернет. Пришлось погуглить. Я нашел несколько решений, но самым лучшим для меня оказалось решение от компании Eterlogic программа Virtual Serial Ports Emulator (далее VSPE). Задуманную мной схему удалось сделать за пару дней (анализ, настройка, тестирование и боевой выход). 
Долго вести свое повествование я не буду. Все довольно просто и понятно. Есть несколько нюансов. Данный продукт бестлатный для Windows с архитектурой х86 и платный для х64.
Стоит $24.95 плюс коммисия магазина.
Программу я купил, но пользоватся версией для х64 можно и без ключа. Просто постоянно выскакивает предложение купить программу. Других ограничений (по времени работы или функционалу) я не увидел. Мне не нравилось постоянно выскакивающее сообщение о покупке и для пользователей это лишняя информации и лишнее действие по закрытию окошка. Купленный ключ можно использовать на нескольких копиях (как я понял неограниченно).
Петь дифирамбы о качестве и возможностях я не буду. Вся информация есть в интернете. Опишу свой пример настройки. 
Итак.
Дано:
  • 4 магазина
  • 4 фискальных регистратора
  • 4 кассовых компьютера
  • 1 сервер терминалов
Задача:
  • Пробросить com порты фискальных регистраторов через интернет.
Настройка VSPE на сервере.
Устанавливаем VSPE на сервер и запускаем (в настройках я выбрал русский язык). После нужно создать виртуальные порты (для каждой кассы свой порт). Номера портов лучше взять пониже, дабы избежать проблем. У нас 4 кассы, поэтому я создаю 4 виртуальных порта (29,30,31,32). Эти порты и будут указаны в настройках касс в 1С. Нажимаем на кнопку "создать новое устройство". Тип устройства "connector". 
Дальше указываем номер нашего нового виртуального порта
После жмем готово.
По аналогии создаем требуемое количество com портов. Идея в том, что этот виртуальный порт будет связывается с реальным com портом кассы магазина.
После мы должны определиться по с адресами. На магазинах у нас должны быть статические ip. Каждый виртуальный порт у нас станет tcp клиентом и будет подключатся к tcp серверу, который будет настроен на компьютере кассы магазина. Поэтому здесь нужно быть внимательным. Мы имеем 4 статических внешних адреса магазинов. Важно понимать, что просто подключится по ip мы не можем. Нужно указать порт tcp server. Продумать номер мы можем заранее. Я решил просто, номера портов складываются следующим образом. 
10хх - где хх номера виртуальных портов, которые будут подключаться к реальному com порту (tcp серверу). Каждый виртуальный порт я отнес соответственно магазину, как мне было удобно (т.е. com29 у меня магазин №1, com30 - магазин №2 и т.д.)
В итоге подучилось 4 адреса:
ххх.ххх.ххх.ххх:1029
ххх.ххх.ххх.ххх:1030
ххх.ххх.ххх.ххх:1031
ххх.ххх.ххх.ххх:1032
ххх.ххх.ххх.ххх - внешний статических адрес магазина. 
Важно продумать эти параметры, чтобы спокойно и удобно настраивать серверную часть.
Идем дальше. Настраиваем подключение tcp клиента. Добавляем новое подключение с типом "tcp client"
Далее
По аналогии делаем все виртуальные порты.
Дальше нужно сохранить наши подключения в файл. Нажимаем сохранить, указываем имя файла и путь.
Данный файл с подключением мы должны запускать при каждом старте Windows. Сделать это очень просто, нужно создать ярлык вида "C:\Program Files\Eterlogic.com\Virtual Serial Ports Emulator\VSPEmulator.exe" -minimize -hide_splash c:/****.vspe
c:/****.vspe - путь к сохраненному файлу. Созданный ярлык помещаем в автозагрузку пользователя (не стартанет если пользователь не зайдет в систему, как настроить службу написано в справке). Программа стартанет в трее.
Естественно клиентская часть у нас не настроена, соответственно созданные подключения tcp client будут ругаться и ждать инициализации. 
Результат настройки на сервере (статус "ОК", т.к. все уже настроено)
Настройка клиентской части.
Устанавливаем VSPE. Настраиваем. Здесь уже клиентская машина будет выступать в роли tcp сервера.
Добавляем новое подключение с типом "tcp server"
Жмем готово. Подключение создано. Нужно обязательно сохранить данное подключение. Нажимаем кнопку сохранить, указываем имя файла и выбираем путь. 
Данный файл с подключением мы должны запускать при каждом старте Windows. Сделать это очень просто, нужно создать ярлык вида "C:\Program Files\Eterlogic.com\Virtual Serial Ports Emulator\VSPEmulator.exe" -minimize -hide_splash c:/****.vspe
c:/****.vspe - путь к сохраненному файлу. Созданный ярлык помещаем в автозагрузку. Программа стартанет в трее.
Следующим шагом нужно на маршрутизаторе магазина сделать проброс.
192.168.х.х:10хх ->ххх.ххх.ххх.ххх:10хх (порты 10хх одинаковые).
После проброса все должно заработать. Статус соединения "ОК"
После меняем настройки 1С на наши виртуальные порты. Делаем тестирование.
P.S. Ваш голос будет лучшей благодарностью для меня.

Комментариев нет:

Отправить комментарий