Этот документ написан Гришей Баталовым (bga@)
RS-232» через TCP/IP. Вопросы и поправки крайне приветствуются.
Задача в следующем:
– имеются два устройства, работающие друг с другом по RS-232
– желательно разнести их в пространстве, а тянуть физически
– есть локальная сеть вблизи обоих устройств
Линукс-машинам:
причём клиент ставится на машине, инициирующей соединение.
Итак, подробности.
«Зашарить» COM-порт, то есть сделать его доступным через сеть
можно при помощи демона sredird:
http://www.ibiblio.org/pub/Linux/system/serial/sredird-2.0.0.tar.gz
Sredird is a serial port redirector that is compliant with
the RFC 2217 “Telnet Com Port Control Option” protocol.
This protocol lets you share a serial port through the network.
RFC 2217 was orginally implemented in Cisco Terminal Servers
in IOS version 11.x.
рекомендуется пользоваться C-Kermit-ом, поскольку он
поддерживает RFC 2217.
( http://www.columbia.edu/kermit/ckermit.html,
1. Скомпилируем sredird, скопируем его в /usr/sbin/sredird
/etc/xinetd.d/sredir:
/dev/ttyS1 – порт на Устройстве-2, /var/lock/LCK..ttyS1 -
файл блокировки, 5 – log level.
Порт может быть любой не занятый.
'$telnet localhost 7200'.
Видим в логах:
'OK'. Выход: 'Ctrl-]', 'telnet> quit', в логах видим:
2. Скомпилируем C-Kermit, либо возьмём с сайта готовый.
на первой машине. Можно его запустить и ещё раз проверить:
C-Kermit> telnet 193.125.167.57 7200
где 193.125.167.57 – IP адрес второй машины,
7200 – назначенный нами порт.
Выход по 'Ctrl-|', 'C', 'C-Kermit> exit'.
s0:345:respawn:/sbin/getty ttyS0 DT9600 tty
Таким образом, при активности на линии ttyS0 будет вызываться
/sbin/getty. В /etc/gettydefs должно присутствовать описание
DT9600 или другого DTxxxxx, если нам мало скорости 9600.
У меня вот так:
/bin/login. Нам это не нужно, по этому вместо /bin/login
напишем свой скрипт /usr/bin/ckermit-login:
telnet-ом на 193.125.167.57:7200. Ctrl-последовательности
отключены параметром '-0'.
машине:
ISSUE – это заставка перед логином, нам она тоже не нужна.
Естественно, скрипт должен иметь права на запуск.
В процессах должна появиться строка вроде:
2562 ttyS0 S 0:00 /sbin/getty ttyS0 DT9600 tty
После подключения клиента:
на подключение датчиков, работающих по RS-232, к контроллеру.
Датчики эти мне ни кто не давал, и, думаю, не даст.
компьютер с IP 193.125.167.57, инициирующим устройством
сделал ноутбук с терминалкой от Norton Commander, отвечающим
устройством – внутренний модем компьютера.
или программного управления потоком. Тип терминала: tty.
передаёт управление в LOGIN только после получения некоего
логина, завершающегося возвратом каретки. Иначе ругается.
Пусть это будет “at” маленькими буквами. Если мы используем
этот ноутбук на настоящем модеме, то это “at” также должно
правильно обработаться.
модема. Не знаю, что она ожидает получить, этот вопрос я
не разбирал. Можно эти сообщения игнорировать. После них
я попадал прямо на модем, 'at', 'ati4' нормально отрабатывали.
запущенным, по этому при следующем входе отрабатывала уже
и строка инициализации, поскольку передавалась сразу в модем.
товарищей, поскольку вполне мог где-то свалять дурака.
—
Баталов Григорий,
системный администратор
АО «Ковдорский ГОК»
http://www.altlinux.ru/pipermail/community/2002-February/045781.html
Ссылок на эту страницу нет