Проброс последовательного порта по сети


Постановка задачи

Необходимо подключить устройство, управляемое через последовательный порт (COM, RS232), к компьютеру, который либо отдалён от этого устройства либо не оборудован последовательным портом. Или другими словами: “необходимо установить и запустить сервер последовательных портов”.

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


Установка ПО

В качестве подходящего ПО для решения задачи выбран проект ser2net (http://ser2net.sourceforge.net/). Для серверной части необходима Linux-машина. Пример установки серверной части (ArchLinux):

[orca@blizzard ~]$ sudo pacman -S ser2net

Для клиентской части, например под MS Windows, выбрать из наиболее подходящих:


Эксперимент

Вначале необходимо подключить требуемое устройство к серверу (например, модем) и убедиться, что оно работает нормально:

[orca@blizzard ~]$ sudo ckermit
(/home/orca/) C-Kermit>
set line /dev/ttyS0
set speed 115200
set carrier-watch off
connect

--
AT[Enter]
OK

ATI9[Enter]
(1.0USR0088\\Modem\USR9100\U.S. Robotics 56K Message)FF
OK

Ctrl+\
(/home/orca/) C-Kermit> quit
Closing /dev/ttyS0...OK
[orca@blizzard ~]$

Настроить соединение, запустить сервер ser2net:

[orca@blizzard ~]$ sudo mv /etc/ser2net.conf /etc/ser2net.conf.sample
[orca@blizzard ~]$ sudo vi /etc/ser2net.conf
BANNER:banner1:Welcome to ser2net TCP port \p device \d\r\n\

2001:raw:600:/dev/ttyS0:19200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
3001:telnet:0:/dev/ttyS0:19200 remctl banner1

[orca@blizzard ~]$ sudo ser2net

Перейти на сторону клиента. Проверить связь программой telnet (Start → Run… → cmd → [OK]):

Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>telnet 10.0.0.14 3001

ATI9[Enter]
(1.0USR0088\\Modem\USR9100\U.S. Robotics 56K Message)FF

OK

Ctrl+]
Microsoft Telnet> quit
C:\Documents and Settings\Administrator> exit
Замечание Здесь и далее, в примерах, адрес 10.0.0.14 это адрес сервера с запущенным демоном “ser2net”

Запустить клиентскую программу для связи с демоном “ser2net”, установить соединение.

Пример для HW VSP3:

  • Start → Programs → HW Group → HW Virtual Serial Port Single → HW Virtual Serial Port
  • Вкладка “Virtual Serial Port”:
    • Port Name: COM3
    • IP Address: 10.0.0.14
    • Port: 2001
    • Нажать [Create Port]
    • Дождаться сообщений: “VSP Status: Connected” и “LAN Status: Connected”

Пример для Eterlogic Virtual Serial Ports Emulator:

  • Start → Programs → Virtual Serial Ports Emulator → VSPE
  • Create new device… → Connector → Next → COM3 → Finish
  • Create new device… → TcpClient → Next → Remote TCP host: 10.0.0.14; Remote TCP port: 2001; Source serial port: COM3 → Finish
  • Дождаться сообщений: “[COM3] Initialization … OK” и “TCP COM3 ⇒ 10.0.0.14:2001 Initialization … OK”

Открыть программу терминального доступа (PuTTY или Hyperterminal), организовать подключение через порт COM3, выполнить AT-команды для проверки.