Проброс 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.

Скачать: http://www.eterlogic.com/Products.VSPE.html

Стоит $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. Ваш голос будет лучшей благодарностью для меня.

См. также

Комментарии
Сортировка: Древо
1. spectre1978 44 11.05.17 10:56 Сейчас в теме
Спасибо, пригодится. У вас дрова случайно не АТОЛ? Там есть встроенный механизм удаленного доступа к регам и проброс портов в общем-то, как выяснилось, не нужен...
2. Shestik 91 11.05.17 11:00 Сейчас в теме
(1) Пожалуйста. Про атол я в курсе. Но хотелось универсального механизма. Т.к. клиенты разные и задачи разные.
7. twiny 7 11.05.17 21:58 Сейчас в теме
(1) да, у АТОЛа такая фишка есть, называется она Сервер печати, она вроде даже и у Штриха есть. Только у АТОЛа она для родного оборудования без оплаты, а для других нужно оплатить ключик. У Штриха эта фишка всегда платная (ценник то ли 30, то ли 50 тыр). Поэтому при покупке уже думаешь, если нужен проброс через Инет, то лучше оборудование брать АТОЛ.
Порты там фактически никакие не пробрасываются, локально поднимается служба, которая и будет на запросы клиента-драйвера отвечать. Опыт показал, что такие вещи стабильнее работают, чем пробросы всякие.
spectre1978; +1 Ответить
9. spectre1978 44 11.05.17 22:42 Сейчас в теме
(7) И как ни странно, решение это при всей его годности довольно малоизвестное...
48. serega_sun 27.06.18 09:37 Сейчас в теме
Нам сказали, что в 9 версии драйвера АТОЛ оно перестало работать. Собственно мы не смогли после установки версии 9.12 настроить передачу данных по TCP.
14. ander_ 18.05.17 05:31 Сейчас в теме
(7)

был опыт использования сервера печати от штриха, правда в других целях. Была задача обеспечить возможность печати на один ФР с нескольких рабочих мест. Работает медленно и нестабильно. В итоге отказались и написали "сервер" печати на 1с, прямо в базе розница.

(0) спасибо за статью. очень может пригодиться.
jONES1979; +1 Ответить
15. twiny 7 18.05.17 10:33 Сейчас в теме
(14)
Со Штриховски сервером не пробовал. А как давно это было, какая версия дров/сервера?
16. ander_ 18.05.17 16:30 Сейчас в теме
(15)
примерно год назад. сам сервер брали примерно 2 года назад. с версиями сказать не могу, уже нет доступа.
3. Yran 11.05.17 11:13 Сейчас в теме
Спасибо, статья помогла!
А с инфракрасным портом можно также замутить?
4. Shestik 91 11.05.17 11:17 Сейчас в теме
(3) Если он в системе как com порт тогда да.
5. Yran 11.05.17 11:44 Сейчас в теме
6. Shestik 91 11.05.17 11:47 Сейчас в теме
8. twiny 7 11.05.17 22:01 Сейчас в теме
Хотелось бы уточнить, как давно используете данное решение? И какова реакция на временную потерю связи, скажем 1-3 секунды.
10. Shestik 91 12.05.17 03:56 Сейчас в теме
(8)Уже полгода работает. Потеря связи особо не влияет. Во время отсутствия связи программа постоянно пытается соединиться, как только связь появляется, практически моментально все поднимается.
11. SGordon1 17.05.17 09:14 Сейчас в теме
ПОдскажите, с онлайн кассами кто то использует? Какое время печати чека ( интересует штрих) ...
12. Shestik 91 17.05.17 09:29 Сейчас в теме
(11) Атол. Онлайн кассы Атол11Ф. Время не замерял. Максимум заметил 2 секунды после отправки команды на фискальник (из 1с, аля проведение чека) и началом печати чека, дальше уже скорость печати самого фискальника. 11ф не самые шустрые ребята, но в пределах нормы печатают чек. Жалоб нет.
13. alexsu4236 17.05.17 10:54 Сейчас в теме
Я пользуюсь HW Virtual Serial Port - он полностью бесплатный но предназначен для одного порта.
А еcли много портов то программы из серии VPort.
Последнее использование RFID сканеры. В том числе и параллельно RDP 1с.
39. Serve-it 15.11.17 08:40 Сейчас в теме
(13)
HW Virtual Serial Por


Расскажите как вы настраиваете соединение через HW Virtual Serial Port? Как у казать на клиентской машине какой Сом-порт будет задействован в сервере.

Я как понимаю если запустить эту программу, то она будет и сервером и клиентом. Таким образом на ТерминальномСервере я прописываю внешний адрес компьютера к которому подключена касса Атол30ф. Указываю port 23.
17. quick 565 18.05.17 23:27 Сейчас в теме
А я тут понимаешь свой велосипед запилил для сканеров. Атол творил чудеса с сервером на нестабильной связи, время от времени укладывая на 100%.
Заделал компоненту для работы 1С с внешними приложениями по pipe https://github.com/WorldException/v7SimpleAddIn
Потом пару простых скриптов, один на тонких клиентах HP ThinStation под Win XP, второй на терминале RDP. и связывается это все через redis.
Порядка 30 машин в онлайне, полет нормальный.
Зато теперь есть киллер фича, можно подключить несколько сканеров к рабочему терминалу (проводной и беспроводной), оно автоматом подхватит получившийся СОМ порт и можно пользоваться любым сканером, в 1С все попадает как будето это один и тот же.
o.nikolaev; rougudz; +2 Ответить
18. rougudz 23.05.17 14:43 Сейчас в теме
а у меня не заработало. печаль. возможно по тому что через vpn. адрес выдаваемый vpn и пришлось использовать на обеих сторонах. пишет что соединение OK, но по факту приема данных нету.
19. MAXXL 6 24.05.17 23:02 Сейчас в теме
(18) Аналогично. Соединение есть - данных нет. И тоже VPN. Непонятно где искать причину и как устранять. Скорость печати на драйвера от Штрих-М удручает.
20. sab_1 07.06.17 18:38 Сейчас в теме
(19) разобрались? а то мне тоже нужно подключать и как раз через впн... у вас получилось?
21. MAXXL 6 07.06.17 21:42 Сейчас в теме
(20)Нет. Откатился назад на Штриховский. Будет еще свободное время и свободный ФР - попробую повторить эксперимент.
27. a.rezyhin 22 17.08.17 15:03 Сейчас в теме
(19) Сегодня тестировал работу проброс с 3 ПК в VPN на сервер. Работает по алгоритму, как в статье без сбоев, единственно в режиме службы есть пока проблемы.
22. StanKu 20.06.17 12:41 Сейчас в теме
Как по мне, так вот это решение куда проще Virtual Serial Port Emulator
И сама работа, и интерфейс поприятнее
24. user774630 31.07.17 13:01 Сейчас в теме
(22) а то что на 120 баксов дороже - мелочи.
23. denssmirnov 14.07.17 17:18 Сейчас в теме
Удобней на сервере 1с поднимать ip сервер com порта, а на клиентах соответственно клиента. Это удобней, не нужны статический ip в таком случае нужен только серверу.
30. Shestik 91 20.10.17 11:22 Сейчас в теме
(23) Да полностью согласен. Не знаю почему я решил сделать наоборот.
25. kondr1221 01.08.17 10:35 Сейчас в теме
ну по факту атол есть утилита родная, штрих падает в сеть и можно просто пробросить порт так как он поддерживает сетевой интерфейс хоти подключается по usb )
26. a.rezyhin 22 17.08.17 14:56 Сейчас в теме
В режиме службы не поднимали? При подключенном устройстве в режиме TCP сервер служба запускается, но проброс не работает. В режиме приложения всё ОК. Написал еще в техподдержку, жду ответа.
user832565; +1 Ответить
31. Shestik 91 20.10.17 11:25 Сейчас в теме
(26)В режиме службы не пробовал. Читал разные форумы, встречал ребят, которые утверждали, что в режиме службы есть проблемы. Говорят, что проброс отваливается и потом vspe не может инициализировать устройства. Но это были сообщения 2013 года. В любом случае нужно тестировать.
37. a.rezyhin 22 22.10.17 12:17 Сейчас в теме
(31) Согласен, периодически в режиме службы тоже встречаю проблемы с инициализацией. Больше всего раздражают проблемы с Windows 10. Нормально автозапуск в режиме приложения не работает, окно сворачивается при запуске но инциализация не отрабатывает, в режиме службы вообще не работает.
28. user832565 20.10.17 11:07 Сейчас в теме
Добрый день, может сможете помочь, у нас ситуация такая, удаленный сервер на нем 1с, и офис с 4 компьютерами которые подключается по RDP, и один фискальник РР-04Ф он подключен к одному из компьютеров и пробрасывается порт на сервер через RDP, но вопрос в том что печатать чеки должны все четверо, это можно как то сделать?
29. Shestik 91 20.10.17 11:20 Сейчас в теме
(28)По идее нужен сервер печати. Но можно сделать и костыльно. Пробросить com-фискальника и зацепить на него клиентов и печатать. Что будет при одновременной отправке вопрос, плюс не понятно, будет ли 1С занимать наглухо порт?
user832565; +1 Ответить
32. user832565 20.10.17 11:50 Сейчас в теме
А если создать виртуальные порты которые смотрят на порт кассы и в 1с сделать несколько касс с виртуальными портами, и каждый будет печатать на своей кассе , теоретически это возможно и можно ли нам помочь удаленно, платно и какая будет сумма
33. Shestik 91 20.10.17 12:36 Сейчас в теме
(32)Могу помочь без проблем.
34. user832565 20.10.17 12:52 Сейчас в теме
Наверно через TeamViewer удобней и как думаете получится и сколько будет стоить
35. Shestik 91 20.10.17 12:54 Сейчас в теме
38. user832565 23.10.17 13:59 Сейчас в теме
Добрый день, ни чего не получается, программа соединяется без проблем, а драйвер фискальника пишет нет связи, причем после создания сервера касса перестает отвечать совсем, если отправлять через драйвер на физический порт кассы то пишет -3: СOM порт занят другим приложением, а если который принимает то все подвисает и в конце пишет -1: Нет связи, можно ли что нибудь придумать.
40. Tohin666 21.12.17 12:26 Сейчас в теме
(38) У меня получилось через сплиттер - сначала создаем сплиттер, указываем физический и виртуальный порт, а потом создаем TCPсервер и указываем на виртуальный порт сплиттера. После этого к сом порту могут подключаться сколько угодно устройств, и он больше не ругается что занят.
36. user832565 20.10.17 12:56 Сейчас в теме
Большое спасибо, попробуем.
41. MrFlanker 142 12.02.18 09:11 Сейчас в теме
VPSE Server: Windows 10
VPSE Client: Windows 2008

Порты COM20...21...22...23... - не заработали

(возможно проблема драйвера через который я обращаюсь к портам "mscomm.ocx")

Попробовал порты до COM1...COM19 - Работает.

p.s. Спасибо за статью, не мог настроить хотя программа VPSE была известна мне много лет назад.
p.s. Тоже купил 64 бит ключ.
42. nico2 09.04.18 11:46 Сейчас в теме
Добрый день, настроил на этой программе подключение к онлайн кассам, (один rdp сервер и 4 кассы). Вроде все работает час, два, а потом касса отваливается, сервер кассу видеть перестает, перезапускаешь эмуляцию, кнопкой стоп-старт работает, потом опять проблемы. Подскажите в чем может быть дело ?
43. user955205 23.05.18 15:44 Сейчас в теме
А можно это штуку использовать без белого айпи чисто внутри сети за роутером? в какую сторону копать не подскажите?
45. Shestik 91 28.05.18 07:04 Сейчас в теме
(43) Просто пробрасывайте на локальный адрес и слушайте локальный адрес, минуя настройки по внешке. Т.е. com 10 (касса) - сервер с IP 192.168.X.X:ХХХХ - Любой комп в сети (клиент) подключается к 192.168.X.X:ХХХХ собственно все.
44. user967678 25.05.18 11:20 Сейчас в теме
История такая. Все через RDP. На сервере (win2008r2 x64) ,автовходом ,через специально созданного пользователя, при старте запускается VSPE. Естественно на серваке статика.
Vspe настроен следующим образом Порт-сплитер- ТСP сервер (Как это ни странно в Mikrotike (Роутер) настроен проброс портов для каждой машины). На клиентской машине где стоит ККМ тоже ставим VSPE и настраиваем его как клиент, всего один строковой параметр.
Схема такая: VSPE - клиент стучится на IP адрес сервера с запросом на порт XXXX , "огненная стена " открывает дверь и говорит иди на адрес 192.168.XXX,XXX там тебя ждут. Тут естественно его ждет VSPE сервер и о радость порт пришел из интернета, все работает. Но не тут то было.
Все работает не долго. По какой то причине связь теряется и постоянно надо делать переинициализацию на клиенте.Только после этого начинает все работать.Опять не надолго!
В конце концов на клиенте было принято решение запускать прогу как службу. Помогла программа nssm (до этого VSPE работала в обычном оконном режиме). Кстати все клиенты работают на Win 10 x64. Но эффект был тот же. Чуть работает а потом все.
Затем было предпринято решение создать bat который просто убивает процесс VSPE . но оно :) то у нас служба и как не в чем не бывало стартует сразу после его завершения.

К чему я это собственно! Кому удалось победить проблему с потерью связи и сделать автоматичекое самовосстановление?
46. Shestik 91 28.05.18 07:09 Сейчас в теме
(44) Интересно, откуда потери. По опыту не сталкивался. Неделями висит, коннект отличный. Автоматическую переинициализацию юзали через настройки? У меня стоит переинициализировать автоматом. Хотя это переинициализация нестартовавших устройств.
47. serega_sun 27.06.18 09:33 Сейчас в теме
Просто поделюсь опытом настройки проброса COM портов через TCP.
Четыре подразделения в разных городах, в каждом по одной ККМ. Все работают в одной базе 1С УТ 10.3 через RDP. Когда использовали онлайн кассы с ФФД 1.0 пользовались драйвером АТОЛ 8.14. Он позволял настроить соединение между 1С на сервере и ККМ через TCP. После перехода на ФФД 1.05 обнаружили, что драйвер АТОЛ 8.14 неправильно передает данные ОФД. Проблема решилась установкой драйвера АТОЛ 9.12. Однако данный драйвер, по уверению сопровождающей нас по части ККМ компании, не поддерживает передачу данных на ККМ через TCP.
Нам самим этот вариант настроить также не удалось. Задержка при печати чека стала составлять до двух и более минут.

Сначала я настроил VSPE так, как это описано в статье. Однако потом решено было настроить серверную часть на сервере, а клиентскую на локальных машинах, к которым присоединены ККМ. В современном варианте у нас настроено так: На локальной машине установлен VSPE, в нем создано устройство TCPClient указан реальный COM порт ККМ и IP адрес сервера и порт TCP. На сервере созданы устройства типа Connector, где указаны виртуальные COM порты 31,32,33,34. По одному устройству на порт. И созданы четыре устройства типа TCPServer осуществляющие связи этих портов с TCP портами 1031, 1032, 1033, 1034 соответственно.
Программа на сервере запускается вручную под отдельным пользователем. Пользователи из других терминальных сессий видят виртуальные COM порты созданные программой из этой сессии. Запуск программы на клиентских компьютерах из автозагрузки настроить не удалось - запускаем вручную. Среднее время задержки при печати чека стало 7,7 секунды в самом удаленном филиале.
Может кому-то пригодится.
max_woody_ru; +1 Ответить
59. Dima Kap 18.07.18 14:37 Сейчас в теме
(47) в вашем случае на машине в магазине требуется статический ip? и можно подробнее описать? а то пробовал и не получилось ничего?
60. serega_sun 19.07.18 09:22 Сейчас в теме
(59)По идее не требуется. Но у нас статический. Подсети подразделений связаны между собой посредством VPN.
скриншоты настроек прикрепил.
Еще на сервере надо в VSPE создать устройство с типом Connector - там одна настройка, номер виртуального порта который надо создать. В этом примере выбираем 31. Вроде и всё.
Прикрепленные файлы:
49. user1005021 27.06.18 16:34 Сейчас в теме
народ может кто то сталкивался с такой проблемой один и тотже провайдер одно и тоже оборудование все комплекты но в одном магазине все работает норм а в другом ни в какую не инициализируется? пишет TCP connection can not be established
50. serega_sun 28.06.18 10:22 Сейчас в теме
(49) Читал историю как ребята купили партию китайских сетевых карт. У всех был одинаковый MAC. Попробуй, догадайся...
51. unoDosTres 05.07.18 13:55 Сейчас в теме
а если касс 1500, я так понимаю этот способ вообще можно не рассматривать? :)
52. user783001 05.07.18 14:37 Сейчас в теме
(51) при 1500 касс пора бы уже о РИБ задуматься....
53. max_woody_ru 05.07.18 14:41 Сейчас в теме
А удалось кому-нибудь настроить это через службы? Вручную работает все ок, если через службу запускать, то процесс есть. а портов нет. Может есть какой-то секрет?
54. max_woody_ru 05.07.18 16:02 Сейчас в теме
(53)Лицензия куплена, но если запускать как службу, он все равно ее все время спрашивает. А если как приложение - нет. В итоге как служба он собственно, не доходит до загрузки файла конфигурации и не организует порты
55. max_woody_ru 05.07.18 16:18 Сейчас в теме
(54)Оказалось, что если я под своей учеткой лицензировал, все равно надо под системной лизензировать. Ну ок, разрешил взаимодействие с рабочим столом, сделал.

Но не работает все равно, статусы клиентских портов не ок, а инициализация. Хорошо, под системной учеткой прибиваю все порты. создаю заново - та же картина. При этом как приложение работает замечательно.

Пробовал запускать службу не под системной, а под своей учетной записью - тоже не работает. Куда вообще смотреть?
56. max_woody_ru 05.07.18 23:10 Сейчас в теме
(55)Заработало, оказалось просто тупо выключили удаленный компьютер ))))А в последней Win10, похоже, отрублено взаимодействие служб с рабочим столом. И лицензию в службе я не могу ввести, я просто не вижу окна программы. Ну что же за...
57. max_woody_ru 06.07.18 12:03 Сейчас в теме
(56) Ну в общем все решилось. В Win 10 весенний апдейт, действительно, больше нет взаимодействия с рабочим столом. Из ситуации я вышел так - запустил VSPE под системным аккаунтом с помощью PSTools. Ну, он запросил лицензию, я ввел, и служба потом стала запускаться нормально
58. ashush 16.07.18 21:28 Сейчас в теме
А ни кто не пробовал TCP COM Bridge? Цена вроде вполне приемлемая - 1200/1500 руб.
Оставьте свое сообщение