Как пробросить COM порт с тонкого клиента в сессию терминального сервера

    Вы здесь

    В данной статье мы рассмотрим как пробросить компорт с тонкого клиента на базе PoniX на терминальный (или любой другой сервер) в сети на примере фискального регистратора ШТРИХ-LIGHT-ФК-Р.

    Казалось бы проброс можно организовать средствами RDP клиента, слава богу как rdesktop так и freerdp поддерживают эту функцию, однако, наша задача пробросить порт так, что бы он не зависел от того, подключен ли пользователь к серверу или нет.

    # грузим на тонкий клиент пакет "ser2net"
    PKG_PACKAGES="ser2net"

    # добавляем параметры настройки для COM1 порта:
    SER2NET_DEVICE=/dev/ttyS0
    SER2NET_OPTIONS="19200 NONE 1STOPBIT 8DATABITS LOCAL"

    Для отслеживания ser2net в реальном времени, необходимо его запустить так "ser2net -p 2005" и подключиться телнетом к 2005 порту.

    ВНИМАНИЕ! скорость бод (в данном случае 19200) очень важна и должна быть одинаковой со стороны ser2net и клиентского приложения использующего пробрасываемый COM порт. Фискальный регистратор ШТРИХ-LIGHT-ФК-Р по-умолчанию использует скорость 4800 (сброс на дефолтные настройки происходит при включении с нажатой кнопкой), чтобы ее изменить необходимо подключить его локально, подключиться на скорости 4800, выбрать нужную скорость и нажать кнопку "Установить параметры", работать он может на всех скоростях вплоть до 115200. Также необходимо понимать, что связь с ФР происходит через сеть, поэтому необходимо выставить большой таймаут (от 3000мс)

    ВНИМАНИЕ! на платах intel D2500HN сзади вывод на порт COM2, соответственно на плате выкидыш COM1, поэтому для этих плат необходимо использовать параметр:
    SER2NET_DEVICE=/dev/ttyS1

    -на плате D2700CC находится 4 serial порта 2 сзади и 2 на плате, при последней конфигурации удалось запустить только 2 порта на задней панели для этого необходимо в БИОСе поставить галочку Serial Port Swap отключить COM3 и COM4, при этом в середине задней панели будет COM1, а с краю COM2 (актуально для CentOS 5.5, при этом с двумя оставшимися портами есть (если они не отключены в БИОСе) какие-то проблемы с прерываниями, если запустить команду "cat /proc/tty/driver/serial", то видно что у портов выставляется irq0. Команда "cat /proc/interrupts" показывет используемые прерывания (обновляется только при обращении к порту), возможно это можно решить с помощью команды setserial)

    -со сторны винды ставится приложение TDST - Tibbo Device Server Toolkit для Windows, в нем нас интересует только Драйвер Виртуального COM-порта (VSPD), для его настройки необходимо выбрать создаваемый COM порт (ВНИМАНИЕ! puTTY НЕ работает с COM портами > 9), протокол - TCP, Routing Mode - client, On-The-Fly - Disabled, вбить адрес сервера (тонкий клиент где запущен ser2net) и порт, сверху кликнуть в разделе "for user" на текущего пользователя и выбрать "Main Config". Для дебага можно открыть Tibbo monitor и сделать запрос к проброшенному COM порту, будет видно как vspd обращается к удаленному серверу и что получает от него в ответ.

    5
    Average: 5 (1 голос)