Есть ли способ подключиться к последовательному терминалу так же, как вы бы сделали с SSH? Должен быть более простой способ, чем такие инструменты, как Minicom, например
$ serial /dev/ttyS0
Я знаю, что могу cat
выводить данные, /dev/ttyS0
но таким образом возможна только одна связь - от порта к консоли. И echo
выход в порт точно такой же, но наоборот, в порт.
Как я могу реализовать двустороннюю связь с последовательным портом самым простым способом в Unix / Linux?
command-line
terminal
tty
serial-port
serial-console
ihatetoregister
источник
источник
Ответы:
Я нахожу
screen
наиболее полезную программу для последовательной связи, так как я все равно использую ее для других целей. Обычно это простоscreen /dev/ttyS0 <speed>
, хотя настройки по умолчанию могут отличаться для вашего устройства. Это также позволяет вам передавать что-либо в сеанс, вводя командный режим и делаяexec !! <run some program that generates output>
.источник
screen
это круто, но я не думаю, что это проще, чемminicom
:-)Фон
Основная причина, по которой вам нужна любая программа, например,
minicom
для связи через последовательный порт, заключается в том, что порт должен быть настроен до начала подключения. Если бы не были установлены надлежащим образом , тоcat
иecho
команды не будет делать для вас то , что вы могли бы ожидать. Обратите внимание, что после запуска подобнойminicom
программы порт остается с использованными настройкамиminicom
. Вы можете запросить настройки связи с помощьюstty
программы следующим образом:Если вы сделали это правильно; после загрузки компьютера и перед запуском любой другой программы, такой
minicom,
как настройки связи, будут установлены настройки по умолчанию. Они, вероятно, отличаются от того, что вам нужно для подключения. В этой ситуации отправка командcat
илиecho
в порт будет либо производить мусор, либо не работать вообще.Запустите
stty
снова после использованияminicom
, и вы увидите, что настройки установлены на то, что использовала программа.Минимальная последовательная связь
В принципе, для двусторонней связи через последовательный порт необходимы две вещи: 1) настройка последовательного порта и 2) открытие псевдо-tty для чтения-записи.
Самая основная программа, которую я знаю, которая делает это
picocom
. Вы также можете использовать такой инструмент, какsetserial
настроить порт, а затем взаимодействовать с ним непосредственно из оболочки.источник
picocom
также позволит вам подключиться к последовательному порту, не переконфигурируя его (--noinit
), и позволит вам выйти без восстановления конфигурации последовательного порта (--noreset
или использоватьCtrl-A
/Ctrl-Q
для выходаpicocom
). Я обнаружил,picocom
что намного проще в использовании, чемminicom
. По причинам, которые я не выяснил, иногда Minicom просто не будет отправлять или получать данные через порт, который работал несколько минут назад или с которым у Picocom нет проблем. Вероятно, это какой-то непонятный вариант конфигурации, но что бы это ни было, я не могу понять это (и такое поведение имело место на более чем одной машине).--omap crcrlf --echo
опцииЕсли в системе установлен UUCP, вы можете использовать команду cu , например:
источник
~^D
или~.
для выхода.Я нашел способ , используя скрипт здесь , что поставить
cat
как фоновый процесс и время цикла , который гласил , введенную пользователем , иecho
его к порту. Я изменил его, чтобы он был более общим, и он идеально подходил моей цели.источник
$?
расширяется до кода завершения последней не фоновой команды (в данном случаеstty -F $1 $2
), поэтому она расширяется до 0, когда ошибки не было. Таким образом, становится последняя строка,kill 0
которая, в свою очередь, похоже, убивает текущую оболочку и всех ее дочерних элементов (в интерактивных оболочках, я считаю, она ведет себя по-разному). Все подробности см. В следующем объяснении: unix.stackexchange.com/questions/67532/…while
цикл без ошибок. Если вы убьете его с помощью Ctrl + C или с помощьюkill
команды, тоcat
процесс останется живым. Чтобы это исправить, вам нужно будет использоватьtrap
команду для выполненияkill $bgPid
при выходе из оболочки, как это делает мой скрипт ниже . Честно говоря, я бы даже не возражал, если бы вы просто добавили весь мой сценарий в свой пост. Я пытался сделать это, но редактирование было отклонено.Попробуйте http://tio.github.io
«tio» - это простое приложение терминала TTY, которое имеет простой интерфейс командной строки для простого подключения к устройствам TTY для базового ввода / вывода.
Типичное использование без вариантов. Например:
Что соответствует часто используемым параметрам:
Он поставляется с полной поддержкой автозаполнения оболочки для всех опций.
источник
msys2
на Windows, и вы можете установитьtio
с,pacman -S tio
потому что он входит в число доступных пакетов по умолчанию.screen
,picocom
И т.д. , не являются. Спасибо!Этот сценарий основан на другом ответе , но отправляет все через последовательный порт (кроме Ctrl + Q), а не только отдельные команды, за которыми следует Enter. Это позволяет вам использовать Ctrl + C или Ctrl + Z на удаленном хосте, а также использовать интерактивные программы с «GUI», такие как aptitude или alsamixer. Можно выйти, нажав Ctrl + Q.
источник
Кстати, пакет putty (который работает в Linux) включает в себя поддержку последовательного интерфейса.
источник
Другая проблема, которая может возникнуть, заключается в том, что вашей учетной записи пользователя может потребоваться установить группу «dialout» для доступа к последовательному порту.
источник
Putty хорошо работает в Linux и предлагает некоторые удобства, особенно для последовательной связи. У него есть один недостаток, который я не смог решить напрямую: нет копирования-вставки из самого окна Putty. Версия для Windows имеет прекрасное автоматическое копирование в буфер обмена при выделении, щелчок правой кнопкой мыши, чтобы вставить поведение (и есть отличные плагины для Chrome и Firefox, чтобы включить то же поведение), но в Linux, копия не любит AFAIK.
Если нехватка копии - проблема (это для меня), тогда включите вход в систему замазкой и откройте стандартное окно терминала,
# tail -f putty.log
и двунаправленный текст доступен для стандартного действия copypasta.источник
Как упоминалось ранее, вы можете попробовать Picocom. Последний выпуск (2.0) также можно использовать (безопасно) для настройки «терминального сервера», поскольку он больше не позволяет вводить команды оболочки. Видеть:
https://github.com/npat-efault/picocom/releases
источник
Это зависит от того, что вы хотите сделать. Хотите ли вы запускать оболочку или приложение в интерактивном режиме с терминала, подключаться к другому компьютеру через последовательную линию, автоматизировать связь с устройством через последовательный порт?
Если вы хотите двунаправленную связь, то я предполагаю, что вы хотите что-то интерактивное с человеком на терминале. Вы можете настроить систему таким образом, чтобы разрешить вход в систему через терминал через последовательный порт, настроив сеанс getty (1) на последовательном порту - getty - это инструмент для настройки терминала и разрешения входа в него. Поместите запись в ваш файл inittab (5), чтобы запустить ее на соответствующем последовательном порту
respawn
.Если вы хотите подключиться к устройству и инициировать автоматические двусторонние разговоры, вы можете увидеть, если ожидаете получить то, что вы хотите. Используйте stty (1), чтобы настроить порт на правильную четность, скорость передачи и другие соответствующие параметры.
Если вы хотите взаимодействовать с другим компьютером через последовательный порт в интерактивном режиме, вам понадобится программа эмуляции терминала. Это делает очень многое - он устанавливает порт, интерпретирует ANSI или другие последовательности команд терминала (ANSI был далеко не единственным стандартом, поддерживаемым последовательными терминалами). Многие эмуляторы терминала также поддерживают протоколы передачи файлов, такие как kermit или zmodem.
Входы и выходы последовательной связи и терминального ввода / вывода довольно сложны; Вы можете прочитать больше, чем вы когда-либо хотели узнать по этому вопросу в серийном Howto.
источник
Возможно, вы захотите взглянуть на
http://serialconsole.sourceforge.net
Pro: нет очевидных проблем с безопасностью, таких как minicom или picocom (если у вас нет проблем с предоставлением доступа к оболочке пользователя, нет проблем, но у вас, скорее всего , есть такая, если вы хотите настроить сервер терминалов ... )
источник
Вы должны быть уверены, что у вас есть правильные разрешения на чтение и чтение, вы можете увидеть это с помощью:
Я полагаюсь на сценарий, который вы нашли и сделал некоторые изменения.
Для систем разработки, которые я использовал к настоящему времени, они требовали:
Эти значения являются значениями по умолчанию в скрипте.
Таким образом, для подключения вы можете использовать его так просто:
Пример:
Автор сценария:
PS: Вам нужно знать, какой тип перевода строки использует ваша система получателя, так как это определит, как вам нужно будет отправлять команды, в моем случае мне нужна была Windows, подобная LF, это означает, что мне нужно отправить
ASCII значения для:
источник
#!/bin/sh
игнорируется, если это не первая строка файла. (2) Серьезно? Вы используете ,1
чтобы указать даже паритет и2
указать нечетное ? (3) Обычно имеется сообщение «использование» или «помощь», которое документирует все параметры, а не только обязательные. (4) Вы должны всегда цитирую ваши ссылки на переменные оболочки (например,"$1"
,"$2"
,"$3"
,"$4"
,"$stopb"
,"$par"
,"$bgPid"
, и даже"$?"
и"$!"
) , если у вас есть веские причины не делать этого , и вы будете уверены , что вы знаете , что вы делаете.Поскольку это уже не упомянуто здесь, я бы также упомянул
socat
- больше информации в https://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-ports-within-cygwin :или же
(хотя у меня была проблема с остановкой, когда он запускается, под MSYS2 на Windows)
источник
Интересно, почему никто не упомянул ser2net .
Пример
/etc/ser2net.conf
:Вы можете подключиться к последовательному порту так же просто, как:
Или удаленно:
Или даже настройте переадресацию портов на маршрутизаторе и выставьте его в Интернет, чтобы вы могли подключиться к нему из любого места (давайте пропустим вопросы безопасности, я говорю о гибкости).
источник
Другой простой способ - получить доступ к машине через ssh с
-X
флагом и запустить программу, такую как putty или gtkterm.Так:
Он должен запустить графический интерфейс на вашем клиентском компьютере, и оттуда вы можете получить доступ к последовательному порту, как если бы вы были на хосте.
Отказ от ответственности: только попробовал это с машинами Ubuntu. Я предполагаю, что это не будет работать с машинами без графических интерфейсов.
Из руководства ssh:
Так что используйте,
-Y
если безопасность является проблемой.источник