UMGUM.COM (лучше) 

Cu + "hardware flow control" ( Особенности работы "cu" с удалёнными системами, не поддерживающими "hardware flow control". )

29 декабря 2011  (обновлено 31 января 2015)

OS: GNU/Linux 2.6.
Application: cu (Call up another system).

Мне нравится утилита "cu", предназначенная для работы с удалёнными системами, устройствами, подключаемыми к компьютеру через последовательный интерфейс. Простая, маленькая, симпатичная уже тем, что не делает ничего, кроме того, что ей прямо указано. Не такая продвинутая, как "minicom", но для настройки модемов и коммутаторов её функционала вполне хватает. Одна проблема - утилита предназначена для работы на уже настроенных интерфейсах и мало что может сделать с ними самостоятельно. Системные настройки последовательных интерфейсов, те, что по умолчанию, подходят для соединения с большинством периферийных устройств, но жизнь скучна без исключений, иногда "cu" приходится помогать. Например тогда, когда устройство и его "прошивка" не поддерживают программного (XON/XOFF) или аппаратного (CTS/RTS), а то и того и другого, управления потоком, предпочитая передавать данные в сыром виде, предоставляя программному обеспечению локальной и удалённой системы самостоятельно разбирать, где начинается, а где заканчивается передача данных.


Типичный набор параметров подключения к "консольному" порту такого рода удалённых систем следующий:

terminal - VT100+
speed - 9600
parity - none
data bits - 8
stop bit - 1
sofware flow control - none
hardware flow control - none

Для подключения к системе, не поддерживающей "программное" и "аппаратное" управление потоком данных, следует, после физического соединения "последовательного" порта локальной и "консольного" удалённой системы соответствующим кабелем, запустить утилиту "cu" с минимальными вводными параметрами:

$ cu --line ttyS0

Где:

--line - имя устройства ("последовательного" порта).

Вероятнее всего, после запуска "cu", мы сможем получить с удалённой системы поток данных, например отображающих процесс загрузки устройства (если подключение инициировано до или в момент запуска устройства) или его статус (если он отображается без специального запроса со стороны пользователя), но взаимодействовать с удалённой системой не сможем, так как наш "последовательный" порт не согласовал параметры подключения, необходимые для полноценной приёмо-передачи.

Когда выполняется подключение к удалённой системе, "cu" разделяется на два процесса. Один читает из "последовательного" порта и пишет на терминал, в то время как другой читает из терминала и пишет в "последовательный" порт. Когда оба процесса успешно устанавливают соединения, в терминале "cu" появляется сообщение "Connected" - это знак к тому, что можно продолжать работу с терминалом.

Теперь, когда сеанс связи инициирован (в терминале "cu" появилось сообщение "Connected"), на не в полной мере настроенном оборудовании, применим к "последовательному" порту компьютера необходимые параметры вручную дополнительно, с помощью утилиты "stty", в параллельном сеансе командной строки (уже после того, как была запущена утилита "cu"):

$ stty -F /dev/ttyS0 9600 cs8 -parenb -crtscts -ixon -echo

Где:

cs8 - устанавливаем быстродействие линии (в бит в секунду);
-parenb - отключаем проверку чётности;
-crtscts - отключаем аппаратное управление потоком данных;
-ixon - отключаем программное управление потоком данных;
-echo - отключаем "эхо";
-F - явно указываем с ками файлом-устройством работаем.

Сразу после того, как "последовательный" порт переведён в требуемое для связи с устройством состояние, соответствующий индикатор (если он имеется, конечно) на устройстве загорится, а мы получаем возможность взаимодействовать с ним.

Вышеописанные ручные манипуляции неудобны, безусловно; гораздо проще применить утилиту "minicom", в рамках сеанса которой можно задавать требуемые параметры "последовательному" интерфейсу, меняя их по мере необходимости. Пока возился с этой писаниной, почти потерял к ней интерес - публикую на всякий случай, вдруг кому пригодится.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )