Создание виртуальных COM-портов в Astra Linux

Создание виртуальных COM-портов в Astra Linux

1. Включение портов

Предварительно в веб-интерфейсе Teleofis ER108 включите и настройте необходимые порты. Также выставьте IP-адрес устройства (например, 192.168.1.88), см. Руководство пользователя. Конвертеры TELEOFIS ER108 rel.4.2.

2. Установка драйвера виртуальных портов

Скачайте дистрибутив с сайта Virtual Serial Port Driver for Linux (VSPDL). На данный момент последняя версия от 09.08.2024. Распакуйте архив vspd-1.54-rsmu.x86_64.tar.gz.

Установку выполняйте с правами root. Внутри архива есть файл README с описанием процесса установки. Драйвер стартует автоматически при старте системы.

systemctl start vspd
systemctl restart vspd

3. Настройка виртуальных портов

Под пользователем root редактируем файл /usr/local/vspd/etc/vspd.conf

<vspdconfig>
   <!-- ROOT DIRECTORY FOR THE DAEMON -->
    <root dir="/usr/local/vspd"/>
    <devprefix value="/dev/vspd"/> <!-- имя портов /dev/vspsX где X-номер -->
    <!-- HOST TO BIND BY DEFAULT -->
    <!-- IP интерфейса компьютера -->
    <bind host="192.168.1.15"/>
    <timeout exec="10000" priority="10"/>
    <log type="file" level="EMR" path="var/vspd.log"/>
    <log type="file" level="ALR" path="var/vspd.log"/>
    <log type="file" level="CRT" path="var/vspd.log"/>
    <log type="file" level="ERR" path="var/vspd.log"/>
    <log type="file" level="WRN" path="var/vspd.log"/>
    <log type="file" level="NTC" path="var/vspd.log"/>
    <log type="file" level="INF" path="var/vspd.log"/>
    <log type="file" level="DBG" path="var/vspd.log"/>

   <!-- ==================== RS232 Config==================== -->
    <vsp num="0"> <!-- Имя порта /dev/vsps0 -->
       <bind host="" port="1001"/>
       <connection rmode="client/server" proto="tcp" conmode="ondata" timeout="5" onthe fly="disabled"/>
       <destination ip="192.168.1.88" port="60001" cport="65535"/> >!--  192.168.1.88 – ip teleofis ER108 -->
       <packets maxlen="255" maxdelay="0" starton="any"/>
       <log type="file" level="EMR" path="var/dev.0.log"/>
       <log type="file" level="ALR" path="var/dev.0.log"/>
       <log type="file" level="CRT" path="var/dev.0.log"/>
       <log type="file" level="ERR" path="var/dev.0.log"/>
       <log type="file" level="WRN" path="var/dev.0.log"/>
       <log type="file" level="NTC" path="var/dev.0.log"/>
       <log type="file" level="INF" path="var/dev.0.log"/>
       <log type="file" level="DBG" path="var/dev.0.log"/>
    </vsp>

   <!-- ==================== RS485-1 Config==================== -->
    <vsp num="1"> <!-- Имя порта /dev/vsps1 -->
       <bind host="" port="1002"/>
       <connection rmode="client" proto="tcp" conmode="ondata" timeout="5" onthe fly="disabled"/>
       <destination ip="192.168.1.88" port="60002" cport="65535"/>
       <packets maxlen="255" maxdelay="0" starton="any"/>
       <log type="file" level="EMR" path="var/dev.1.log"/>
       <log type="file" level="ALR" path="var/dev.1.log"/>
       <log type="file" level="CRT" path="var/dev.1.log"/>
       <log type="file" level="ERR" path="var/dev.1.log"/>
       <log type="file" level="WRN" path="var/dev.1.log"/>
       <log type="file" level="NTC" path="var/dev.1.log"/>
       <log type="file" level="INF" path="var/dev.1.log"/>
       <log type="file" level="DBG" path="var/dev.1.log"/>
    </vsp>

   <!-- ==================== RS485-2 Config==================== -->
    <vsp num="2">
       <bind host="" port="1003"/> <!-- Имя порта /dev/vsps2 -->
       <connection rmode="client" proto="tcp" conmode="ondata" timeout="5" onthe fly="disabled"/>
       <destination ip="192.168.1.88" port="60003" cport="65535"/>
       <packets maxlen="255" maxdelay="0" starton="any"/>
       <log type="file" level="EMR" path="var/dev.2.log"/>
       <log type="file" level="ALR" path="var/dev.2.log"/>
       <log type="file" level="CRT" path="var/dev.2.log"/>
       <log type="file" level="ERR" path="var/dev.2.log"/>
       <log type="file" level="WRN" path="var/dev.2.log"/>
       <log type="file" level="NTC" path="var/dev.2.log"/>
       <log type="file" level="INF" path="var/dev.2.log"/>
       <log type="file" level="DBG" path="var/dev.2.log"/>
    </vsp>
</vspdconfig>

После редактирования файла перезапустите сервис:

systemctl restart vspd

Установите права:

chmod 666 /dev/vsps*

Также добавьте разрешение на доступ к портам при старте компьютера. Пример файла /etc/rc.local:

#!/bin/sh -e
chmod 666 /dev/ttyS*
chmod 666 /dev/vsps*
exit 0

4. Проверка портов

Проверку портов можно производить с помощью программ putty или minicom. Порты имеют имена:

  • /dev/vsps0
  • /dev/vsps1
  • /dev/vsps2

Открытие порта с помощью minicom:

minicom -D /dev/vsps0

Логи работы можно посмотреть в папке:

/usr/local/vspd/var/

Также работу портов можно проверить командой:

sudo dmesg | grep vsps
После проверки работы отключите логирование в файле /usr/local/vspd/etc/vspd.conf.