-
Данный продукт бесплатный для Windows с архитектурой х86
и платный для х64. Использовать версией для х64 можно и без ключа.
Просто постоянно выскакивает предложение купить программу. Других
ограничений (по времени работы или функционалу) нет. -
Программа не сохраняет настройки автоматически и не
запускается в момент старта ОС. Поэтому необходимо сохранить настроенную
конфигурацию и создать ярлык с параметром:
4.1 Настройка VSPE на сервере
Запустить программу VSPE. Нажать на кнопку «Создать новое устройство».
После нужно создать виртуальные порты (для каждой кассы свой порт). Номера портов лучше взять пониже, дабы избежать проблем.
В открывшемся окне в выпадающем меню выбрать TcpServer. Нажать кнопку «Далее».
Установить локальный номер tcp-порта, который будет
прослушиваться. Выбрать COM-порт, к которому подключено оборудование
через преобразователь интерфейсов. Нажать на кнопку «Настройки».
Нажать кнопку «Готово».
В появившемся окне нажать на кнопку запуска (зеленый треугольник). Серверная часть настроена.
4.2 Настройка VSPE на клиенте.
Запустить программу VSPE. Нажать на кнопку «Создать новое устройство».
В открывшемся окне в выпадающем меню выбрать «Connector».
Выбрать виртуальный COM-порт, который будет использоваться для проброса. Нажать на кнопку «Готово».
Нажать на кнопку «Создать новое устройство».
В открывшемся окне в выпадающем меню выбрать TcpClient
Указать IP-адрес удаленного сервера и номер TCP-порта, на
который будет осуществляться подключение. Выбрать виртуальный COM-порт,
который будет использоваться для соединения.
В появившемся окне нажать на кнопку запуска (зеленый треугольник). Клиентская часть готова.
После меняем настройки 1С на наши виртуальные порты. Делаем тестирование.
5. Примечание
Несколько нюансов данного ПО:
"C:\Program Files\Eterlogic.com\Virtual Serial Ports Emulator\VSPEmulator.exe" -minimize -hide_splash c:/****.vspe
где, c:/****.vspe — путь к сохраненному файлу.
Созданный ярлык помещаем в автозагрузку или создаем
bat-файл для запуска программы с использованием сохраненной
конфигурации. Bat-файл должен содержать строку следующего формата:
VSPEmulator. exe c:/vspebat. vspe - minimize - hide_splash,
Для автоматического запуска программы VSPE после
запуска ОС Windows следует поместить ссылку на этот bat-файл в
автозагрузку или планировщик заданий. (для серверной и клиентской
части).
При интеграции сторонних пультовых программ в «Центр Охраны», иногда стоит задача по конвертации сетевого TСP-порта в последовательный СОМ-порт или эмуляции связки двух СОМ-портов. Существует различные программы для решения этих задач. Рассмотрим на примере использования «Virtual Serial Ports Emulator» (VSPE).
Предварительно скачайте программу VSPE c официального сайта, извлеките из архива и установите (запустив SetupVSPE. msi)
Конвертация TCP-COM
Подходит для решения задачи, когда события передаются по TCP-порту, а принять их нужно на источник, в котором можно задать только COM-порт (например, Источник событий Sur-Gard).
Скачайте файл с готовыми настройками и запустите его от имени администратора (для 64х-разрядных систем может появится окно с предложением лицензии, нажать Нет и Ок).
Данные настройки позволяют принять события по сетевому TCP-порту 10025 и передать их на виртуальный COM-25. Соответственно, настраиваем передающую события программу на подключение по порту TCP-10025, а Источник событий в «Центре Охраны» на COM-25.
Важно! Для корректной работы данной конфигурации порт TCP-10025 должен быть ничем более не занят и нигде не использоваться, COM-25 должен отсутствовать в диспетчере устройств.
Изменение номеров портов
Если вышеуказанные порты заняты, то их можно изменить на другие. Для этого остановите эмуляцию, нажав Стоп. Двойным кликом по второй строке откройте настройку и измените номера портов на необходимые:
Важно! При изменении номера COM-порта обязательно поменять его на такой же в первой строке Connector.
После изменений запустите эмуляцию, нажав Старт. Если все верно внизу появится два «OK»:
Эмуляция COM-COM
Когда события передаются через COM-порт, можно создать виртуальную связку. Данный способ избавляет от необходимости устанавливать расширители СОМ-портов в компьютер.
Скачайте файл с готовыми настройками и запустите его от имени администратора (для 64х-разрядных систем может появится окно с предложением лицензии, нажать Нет и Ок).
Данная настройка позволяет передавать данные между СОМ-портами 26 и 27. Соответственно, настраиваем передающую события программу на СОМ-26, а Источник событий в «Центре Охраны» на COM-27.
Важно! Для корректной работы данной конфигурации порты COM-26 и COM-27 должны отсутствовать в диспетчере устройств.
Если указанные порты заняты, можно изменить номера (по аналогии, как описано выше).
Дополнительно
- Для автоматического запуска VSPE после перезагрузки системы, достаточно создать ярлык для файла с конфигурацией и поместить его в Автозагрузку через Пуск
- Запускать одновременно две конфигурации нельзя. Но можно в одной добавить все необходимые связки и запускать её
Содержание:
- Настройка веб-сервера в IIS
- Публикации базы в 1С
- Настройка прав доступа для IIS
- Публикация базы данных на веб-сервере
- Подключение к опубликованной информационной базе через веб-браузер
- Создание бесплатного SSL-сертификата Let’s Encrypt на IIS
- Создание SSL-сертификата
- Создание отдельного пула и сайта с подключенным ssl-сертификатом
- Подключение кассового оборудования. Проброс COM-портов через TCP/IP с помощью Virtual Serial Ports Emulator (VSPE)
- Настройка VSPE на сервере
- Настройка VSPE на клиенте
- Примечание
Бесплатный сервер 1С для подписчиков нашего telegram-канала !
1. Настройка веб-сервера в IIS
Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:
- Общие функции HTTP (Common HTTP Features)
- Статическое содержимое (Static Content)
- Документ по умолчанию (Default Document)
- Обзор каталогов (Directory Browsing)
- Ошибки HTTP (HTTP Errors)
- Разработка приложений (Application Development)
- ASP
- ASP.NET 3.5
- Расширяемость .NET 3.5 (.NET Extensibility 3.5)
- Расширения ISAPI (ISAPI Extensions)
- Фильтры ISAPI (ISAPI Filters)
- Исправление и диагностика (Health and Diagnostics)
- Ведение журнала HTTP (HTTP Logging)
- Монитор запросов (Request Monitor)
- Средства управления (Management Tools)
- Консоль управления IIS (IIS Management Console)
2. Публикации базы в 1С
На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты), обязательно выбрав при установке компоненты:
- 1С:Предприятие
- Модули расширения веб-сервера
Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:
- Модуль расширения веб-сервера
2.1 Настройка прав доступа для IIS
Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по-умолчанию: C:inetpubwwwroot), необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties).
В открывшемся окне свойств, переходим на вкладку «Безопасность» (Security) и нажимаем кнопку «Изменить» (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи» (Users) и в списке разрешений для выбранной группы установим флаг «Полный доступ» (Full control). Затем нажмем «Применить» (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК».
Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по-умолчанию: C:Program Files (x86)1cv8 для 32-разрядного модуля расширения и C:Program Files1cv8 для 64-разрядного) группе IIS_IUSRS. Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того, чтобы необходимая группа появилась в списке «Группы или пользователи» (Groups or user names), необходимо нажать расположенную под списком кнопку «Добавить» (Add..), а в окне выбора групп или пользователей нажать «Дополнительно» (Advanced…).
Затем нажимаем расположенную справа кнопку «Поиск» (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК».
И, наконец, если публикация выполняется для файловой базы, необходимо также дать группе IIS_IUSRS полные права на каталог с расположенными файлами данной информационной базы.
2.2 Публикация базы данных на веб-сервере
Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»
Откроется окно настройки свойств публикации на веб-сервере. Основные поля, необходимые для публикации, уже заполнены по-умолчанию:
- Имя виртуального каталога — имя, по которому будет происходить обращение к базе данных на веб-сервере. Может состоять только из символов латинского алфавита.
- Веб-сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
- Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
- Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов, которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
- Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.
Выбрав необходимые настройки публикации, нажимаем «Опубликовать».
Если публикация прошла без ошибок, увидим соответствующее сообщение.
2.3 Подключение к опубликованной информационной базе через веб-браузер
Для подключений к опубликованной базе данных запускаем Internet Explorer, в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы>. В данном примере это http://http://localhost/BP.
К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80 – по внешнему) IP-адресу.
3. Создание бесплатного SSL-сертификата Let’s Encrypt на IIS
Наличие SSL-сертификата для сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных.
Let’s Encrypt – это некоммерческий центр сертификации, позволяющий в автоматическом режиме через API выпускать бесплатные SSL/TLS сертификаты. Выдаются только сертификаты для валидации доменов (domain validation) со сроком действия 90 дней, что не является проблемой из-за наличия встроенной возможности автоматического перевыпуска сертификата, в результате чего обеспечивается непрерывность защиты.
Далее описан способ получить SSL-сертификат от Let’s Encrypt при помощи консольной утилиты LetsEncrypt-Win-Simple. Она представляет собой простой мастер, который позволяет выбрать один из сайтов, запущенных на IIS и автоматически выпустить и привязать к нему SSL-сертификат.
3.1 Создание SSL-сертификата
Скачиваем последний релиз клиента со страницы проекта на GitHub https://github.com/win-acme/win-acme/releases
Распакуем его в каталог на сервере с IIS: c:inetpubletsencrypt
Запустится интерактивный мастер, который сначала попросит указать ваш e-mail, на который будут отправляться уведомления о проблемах с обновлением сертификата, и согласиться с пользовательским соглашением.
Затем нужно будет выбрать, что необходимо создать новый сертификат (N: Create new certificate) и выбрать тип сертификата (в нашем примере нет необходимости использовать сертификат с несколькими SAN), поэтому достаточно выбрать пункт 1. Single binding of an IIS site.
Далее утилита выведет список запущенных на IIS сайтов и предложит выбрать сайт, для которого нужно выпустить сертификат.
Следующий этап – выполнение валидации домена. Доступно несколько вариантов валидации: TLS, через запись в DNS или через HTTP). Самый простой вариант — выбрать пункт 4 [http-01] Create temporary application in IIS (recommended). В этом случае на веб-сервере будет создано небольшое приложение, через которое серверы Let’s Encrypt смогут провести валидацию.
Примечание. При выполнении TLS/HTTP проверки ваш сайт должен быть доступен снаружи по полному DNS имени по протоколам HTTP (80/TCP) и HTTPS (443/TCP).
После валидации утилита letsencrypt-win-simple автоматически отправит запрос на генерацию сертификата, скачает его (все необходимые файлы, а также закрытый ключ сохраняются в каталог C:UsersUserAppDataRoamingletsencrypt-win-simple) и создаст привязку на сайте IIS. В том случае, если на сайте уже установлен SSL-сертификат, он будет заменен новым.
Кроме того, будет создано правило в планировщике заданий Windows, которое запускается каждый день и автоматически выпускает и устанавливает новый сертификат каждые 60 дней.
3.2 Создание отдельного пула и сайта с подключенным с SSL-сертификатом.
Создаем отдельный пул в IIS для letsencrypt
Добавляем сайт в новый пул. Порт указываем 443 (или другой на который позже сделаем проброс на 443 порт).
Указать новый сертификат в «Сертификаты SSL»:
Настроить привязку к нашему сайту:
Проверяем.
Веб-публикация 1С доступна по защищенному соединению https.
4. Подключение кассового оборудования. Проброс COM-портов через TCP/IP с помощью Virtual Serial Ports Emulator (VSPE).
4.1 Настройка VSPE на сервере
Запустить программу VSPE. Нажать на кнопку «Создать новое устройство».
После нужно создать виртуальные порты (для каждой кассы свой порт). Номера портов лучше взять пониже, дабы избежать проблем.
В открывшемся окне в выпадающем меню выбрать TcpServer. Нажать кнопку «Далее».
Установить локальный номер tcp-порта, который будет прослушиваться. Выбрать COM-порт, к которому подключено оборудование через преобразователь интерфейсов. Нажать на кнопку «Настройки».
Нажать кнопку «Готово».
В появившемся окне нажать на кнопку запуска (зеленый треугольник). Серверная часть настроена.
4.2 Настройка VSPE на клиенте.
Запустить программу VSPE. Нажать на кнопку «Создать новое устройство».
В открывшемся окне в выпадающем меню выбрать «Connector».
Выбрать виртуальный COM-порт, который будет использоваться для проброса. Нажать на кнопку «Готово».
Нажать на кнопку «Создать новое устройство».
В открывшемся окне в выпадающем меню выбрать TcpClient
Указать IP-адрес удаленного сервера и номер TCP-порта, на который будет осуществляться подключение. Выбрать виртуальный COM-порт, который будет использоваться для соединения.
В появившемся окне нажать на кнопку запуска (зеленый треугольник). Клиентская часть готова.
После меняем настройки 1С на наши виртуальные порты. Делаем тестирование.
5. Примечание
Несколько нюансов данного ПО:
- Данный продукт бесплатный для Windows с архитектурой х86 и платный для х64. Использовать версией для х64 можно и без ключа. Просто постоянно выскакивает предложение купить программу. Других ограничений (по времени работы или функционалу) нет.
-
Программа не сохраняет настройки автоматически и не запускается в момент старта ОС. Поэтому необходимо сохранить настроенную конфигурацию и создать ярлык с параметром:
"C:Program FilesEterlogic.comVirtual Serial Ports EmulatorVSPEmulator.exe" -minimize -hide_splash c:/****.vspe
где, c:/****.vspe – путь к сохраненному файлу.
Созданный ярлык помещаем в автозагрузку или создаем bat-файл для запуска программы с использованием сохраненной конфигурации. Bat-файл должен содержать строку следующего формата:
VSPEmulator. exe c:/vspebat. vspe - minimize - hide_splash,
Для автоматического запуска программы VSPE после запуска ОС Windows следует поместить ссылку на этот bat-файл в автозагрузку или планировщик заданий. (для серверной и клиентской части).
- Так же необходимо сделать проброс портов (которые указывали) на маршрутизаторе.
Мы также готовы оказать помощь в настройке веб-публикации и подключении кассового оборудования.
Нашим клиентам мы предлагаем реализацию данного проекта и последующее ИТ-обслуживание в рамках ИТ-аутсорсинга.
В начало статьи
В данной статье рассматривается подключение фискального регистратора «Штрих» к удаленной рабочей станции, работающей с УТ 11 в терминальном режиме.
Исходные данные:
— Сервер Windows 2008 r2 c установленными службой удаленных рабочих столов (Remote Desktop Services, ранее известная как Terminal Services), платформой 1С 8.2 и файловой базой УТ 11.
— Удаленная рабочая станция, к которой необходимо подключить фискальный регистратор.
— На рабочей станции, кроме УТ 11, должны работать (локально) другие приложения, которые также использует фискальный регистратор. Назовем их АРМ.
— В рабочей станции имеется только 1 COM-порт.
— Фискальный регистратор (ФР) «Штрих».
1. Первым делом, устанавливаем на рабочей станции драйвер ФР.
2. Так как ФР будет использоваться несколькими программами необходимо, чтобы каждая программа использовала «свой» COM-порт. Этого можно достичь с помощью эмулятора COM-портов Virtual Serial Ports Emulator (VSPE) от компании Eterlogic Software.
3. Скачали, установили, запустили. Программа VSPE русифицирована и для удобства работы можно сразу выбрать язык.
4. Нажмем «Создать новое устройство».
5. В появившемся окне выберем тип устройства: «Splitter». Затем нажмем «Далее».
6. В окне « Характеристики устройства», красным выделен порт – источник данных, т.е. физический COM-порт, теперь он будет занят этой программой, и, далее мы будем обращаться к виртуальному COM-порту, который выбран левее.
7. Далее нажимаем «Настройки». Красным подчеркнуты скорость и время задержки, параметры должны обязательно соответствовать параметрам физического COM-порта и устройства (в нашем случае фискального регистратора). Жмем «ОК» и «Готово».
8. В итоге у нас создан виртуальный порт COM8. От одного физического COM-порта (COM1) мы не можем создать несколько виртуальных, зато от виртуального (COM8) порта, — можем.
9. Снова нажмем «Создать новое устройство», выберем тип устройства «Splitter». В окне «Характеристики устройства» теперь у нас «Порт-источник данных» — виртуальный порт, созданный от физического (COM8), а «Виртуальный порт» — тот порт, который потом будет использовать программа (УТ11, АРМ и т.д.) для доступа к устройству, в нашем случае к ФР. В настройки так же должны быть установлены значения, аналогичные физическому COM порту и устройству.
10. После нажатия кнопки «Готово» у нас следующая картинка.
11. Аналогичным образом нам нужно создать столько виртуальных портов, сколько программ будет использовать фискальный регистратор (нужно следить за настройками скорости и таймаута).
На картинке:
COM1 – физический порт на компьютере, он будет занят программой VSPE и не может быть использован другим устройством;
COM8 – виртуальный порт, который тоже занят VSPE и не может быть использован чем-то еще;
COM2, COM3, COM4 – 3 виртуальных порта, которые будут использованы другими программами для доступа к фискальному регистратору (УТ11, АМР1, АРМ2).
12. Настройку нужно обязательно сохранить:
нажимаем «Файл»-«Сохранить как …». Задаем имя файла и сохраняем. Пусть имя файла будем com8_234.vspe и сохранили его в корне диска C:, тогда создаем ярлык со следующей строкой в поле «Объект» «C:\Program Files\Eterlogic.com\Virtual Serial Ports Emulator\VSPEmulator.exe» c:\ com8_234.vspe –minimize. Получившийся ярлык перетаскиваем в «Автозагрузку».
13. Созданы ли порты (на рабочей станции) можно проверить в консоли командой «change port».
14. Определяемся, какой COM-порт будет использоваться УТ11 для работы с фискальным регистратором. Пусть это будет COM3. Подключаем ФР к рабочей станции и запускаем «Тест драйвера ФР 4.10». В появившемся окне нажимаем кнопку «Настройка свойств».
15. Настраиваем параметры драйвера.
После установки нажимаем кнопку «Установить параметры», а затем «Проверка связи». В окне «Код ошибки» должно появится наименование и номер ФР.
Переходим к серверу.
16. На сервере выбираем «Пуск»-«Администрирование»-«Службы удаленных рабочих столов»-«Конфигурация узла сеансов удаленных рабочих столов».
17. На нужном подключении (в нашем случае это RDP-Tcp) жмем правую кнопку мыши и открываем свойства подключения. Переходим на закладку «Параметры клиента» и в окне «Перенаправление» проверяем ОТСУТСТВИЕ!!! галочек на метке «СОМ-порты» (если требуется перенаправить другие устройства, галочки против них также должны быть УБРАНЫ!!!)
После снятия отметок жмем «ОК» и закрываем консоль .
Возвращаемся к рабочей станции.
18. Запускаем «Подключение к удаленному рабочему столу» и подключаемся к серверу. В терминале вводим команду «change port» и видим, что порты не пробросились.
19. Вероятная причина в этом – настройка параметров подключения к терминалу. Нам нужна закладка «Локальные ресурсы», нажмем «подробнее».
20. В открывшемся окне нужно УСТАНОВИТЬ!!! галочку «порты». После чего нужно переподключиться к терминалу (т.е. завершить работу на терминале, и зайти на него заново, а не просто закрыть).
21. Еще раз проверим, пробросились ли порты в терминале, если все прошло удачно, то картинка будет примерно следующая:
Настройка УТ11 на сервере
22. Устанавливаем драйвер ФР на сервере.
23. Запускаем на сервере УТ11 в режиме «Предприятие» и заходим под администратором. На вкладке «Администрирование» заходим в пункт «Настройки подключаемого оборудования» и устанавливаем галочку на «Использовать подключаемое оборудование».
23. Открываем справочник подключаемого оборудования (ссылка «Подключаемое оборудование») и создаем новое оборудование.
24. Устанавливаем тип оборудования, обработчик драйвера и рабочее место.
Жмем «Записать и закрыть».
25. После создания настраиваем драйвер фискального регистратора.
26. Устанавливаем номер порта и его параметры, такие же что и на рабочей станции.
27. После записи параметров тестируем соединение с ФР.
Если соединение прошло успешно, то будет выдано сообщение с названием и номером ФР. В том случае, если будет выдано сообщение о невозможности соединения с ФР, необходимо установить другие параметры скорости и таймаута.
Следует помнить, что параметры скорости и таймаута необходимо устанавливать ОДИНАКОВЫЕ как в настройках ФР в УТ11 на сервере, так и на стороне рабочей станции в драйвере ФР и созданных виртуальных портах!!!
Создаем кассу ККМ с привязкой данному ФР.
28. Переходим на вкладку «Нормативно-справочная информация» и по ссылке «Кассы ККМ» создаем новую кассу. В поле «Оборудование» выбираем созданный ФР.
29. Переходим на рабочую станцию, запускаем УТ11 в терминале, на вкладке «Продажи» выбираем пункт «Чеки ККМ». При необходимости в поле «Касса ККМ» выбираем созданную кассу.
Вуаля, можно работать.
PS. Для удобства можно, например, физическому COM-порту присвоить COM9 (в настройках системы), создать от него виртуальный порт COM8, а виртуальным портам удобные номера: ком 1,2,3.
Иногда нужно остановить и заново запустить эмулятор портов, это можно сделать при помощи панели инструментов в VSPE.
Иногда настройки скорости (отличные от настроек физического COM-порта) сохранены в самом фискальном регистраторе, это можно исправить с помощью утилиты Test Driver’a (ярлык с изображением зебры).
Оригинал статьи
Connecting to serial port (com port) over network
(Serial port or com port? — Serial ports are often refered as COM ports. It is the same to be short. You can read abut it in the Wiki article )
- The problem
- The solution in theory
- WINDOWS
- Server
- Client
- Driver Signature
- LINUX:
- Server
- Client
- Connect over the internet
The problem
Suppose we have an application that works with some device using serial port (com port or comport — the same thing). It could be GPS reader, IRDA, whatever. So it looks like this:
+--------+ serial +--------------+
| DEVICE | ~~~~~~~~~~ | PC with APP |
+--------+ +--------------+
Now what we want, is to have the device connected to one machine (server), and run the application on the remote machine (client) over the network. Real life example: a device is connected to raspberry pi (very small single-board machine) that is connected to a local network, and read the data on a desktop.
Since the application (APP on diagrams) knows only how to communicate with the device by serial port (we suppose), the client machine has to have some virtual serial port that is used by the application. It is called «virtual serial port» or «virtual comport» as this is a software emulated bridge between a client and your application. So the diagram is:
+--------+ comport +--------+ network +--------+ virtual comport +---+
| DEVICE | ~~~~~~~~~~ | SERVER |========....==========| CLIENT |~~~~~~~~~~~~~~~~~~|APP|
+--------+ +--------+ +--------+ +---+
Thus we need:
- SERVER that communicates with the DEVICE through physical serial port and then serves the data over network
- Client that connects to the server
- Virtual comport that mimics physical serial port and interface with the APP
So now the application just works with serial port on the client machine, and doesn’t even know that data is actually transmitted over the network.
The solution in theory
One of the solutions is using telnet with RFC2217 — Telnet Com Port Control Option. Is solves exactly the problem above. There are a lot of software that supports telnet+RFC2217 serial port forwarding. It allows you to run the server and the client on linux or windows machines (and MACs I suppose, but haven’t tested it). This allows one to run linux server and windows client. Both would use completely different software, but because of RFC2217 standard they ‘know’ how to communicate.
More over you can multiplex the com ports and encrypt the data. Whatever you want.
The solution in practice
WINDOWS
There is an absolutely brilliant free opensoure solution that can be used for comport forwarding, client and server for windows. It is called com0com. It actually consists of two parts a HUB (hub4com) and kernel-mode virtual serial port driver (com0com) — explained further.
http://sourceforge.net/projects/com0com
Server
For the server you need only hub4com.
Source forge hub4com download link
Configuration (I just cite the documentation):
You have a server computer with phisical COM1 port and you’d like to share it
through the network by the RFC 2217 «Telnet Com Port Control Option» protocol:
Start the com2tcp-rfc2217.bat on COM1 port. For example:
com2tcp-rfc2217 COM1 7000
It will listen TCP/IP port 7000 for incaming connections and redirect them to COM1 port.
Client
To be a windows client you have to install com0com virtual comport driver and hub4com (provided as 2 separate files).
Source forge com0com download link
Source forge hub4com download link
Create a PAIR of virtual comports where one is used for RFC2217 and the other is the port for your application will use.
(documentation citation) for RFC 2217 client :
You have a server computer your.comport.server with physical serial port
shared through the network by the RFC 2217 protocol (see above example) and
you’d like to use it on the client computer like a virtual serial port.
With the com0com’s Setup Command Prompt create COM19<->COM20 virtual
COM port pair (see com0com’s ReadMe.txt for more info). For example:
>setupc.exe
command> install PortName=COM19,EmuBR=yes PortName=COM20
Example. Start the com2tcp-rfc2217.bat on COM19 port:
com2tcp-rfc2217 \\.\COM19 192.168.123.30 7000
It will redirect virtual serial port COM20 on the second computer to the physical serial port on the first computer.
(!) TL;DR; Your Application should connect to COM20.
Explanation
TL;DR; We have a virtual serial port pair COM19<->COM20, we connect com2tcp to one of the ports (COM19) and your application connects to the other (COM20)
It is bit counter intuitive why a virtual pair is created.
To explain what happens, imagine we create a virtual comport pair: COM19<->COM20 as in the example above.
The reason one needs a pair is that only one thing can be connected to a COM port. If hub4com binds network data
to COM19, then the port is taken and your application can’t connect to it. So virtual comport pair mirrors everything
from COM19 to COM20, which is free and your application can connect to it.
So, the more detailed client diagram looks like this now:
network +---------+ +-------+-------+ +---+
....==========| hub4com |~~~| COM19 = COM20 |~~~~~~~~~~~~|APP|
+---------+ +-------+-------+ +---+
virtual pair
Driver Signature
Deprecated part — com0com 3.0.0 comes with driver signarure. Unfortunately on newer windows (since 2018) this doesn’t help.
According to Windows Driver Signing Policy «Starting with Windows 10, version 1607, Windows will not load any new kernel-mode drivers which are not signed by the Dev Portal.» (link)[https://sourceforge.net/p/com0com/discussion/440109/thread/c4d52f1b/?limit=25]
There are 3 solutions:
- Disable driver signature verification (bad)
- Use version 2.2 (it works)
- Use DSEO
(older problem) According to this bug report on Windows 8×64 you may get problem with driver installation if you don’t have the driver signature verification turned off. To enable driver test mode and sign a driver for windows, one may download DSEO
LINUX:
The linux app I’ve got working pretty easy is ser2net
http://linux.die.net/man/8/ser2net
It has configuration file located at /etc/ser2net.conf.
Ubuntu installation
sudo apt-get ser2net #install sudo vim /etc/ser2net.conf #configure ser2net #run service
Linux Server
The configuration line (for /etc/ser2net.conf) that corresponds to windows setup above
7000:telnet:0:/dev/ttyUSB0:1000000 8DATABITS NONE 1STOPBIT remctl
Here:
- 7000 — port
- /dev/ttyUSB0 — name of serial port
- 1000000 … — baud rate etc (actually you can skip it because of remctl)
- remctl — means using remote port configuration as of RFC2217
That is it. Read ser2net docs for more
Linux Client
socat
can be used as a linux client. Socat is a command line based utility that establishes two bidirectional byte streams and transfers data between them.
socat /dev/ttyS2,b115200,raw,echo=0 TCP:192.168.123.30:7000
- 192.168.123.30 — your server IP
- 7000 server port
- your app should connect to /dev/ttyS2
- 115200 — port baud rate
socat man
Connect over the internet
All the above solutions basically describe how to forward data from com-port (serial port) to network port and then how to bind a network IP with port to a virtual com-port. It is streight forward for a local network but how to connect the devices over the internet? If you are an experiecned IT person, you may think of tons of solutions here, starting from fixed IPs and counting up to infinity.
For me one of the versatile easy to configure ways was to use ZeroTier VPN services. It is free for up to 100 devices and have a good interface for easy configuration, good manuals, etc. In the end you have a network interface on each of the machines which acts as a single local network (basically what VPN is).
I’m NOT connected anyhow with Zerotier co. Just share the solution which was optimal for me. «As is».