Меню Рубрики

Linux port serial terminal

Посоветуйте Serial port terminal

Сабж, в данный момент пользую это, но хотелось бы что-то более удобное.

minicom ищете? И что подразумевается под «более удобное»?

телепаты в отпуске, так что требования предъявляйте самостоятельно

Нет, не оно. Под более удобное, что бы меньше зависимостей, без GUI.

по ссылке не ходи @ сразу посылай

миником и так без гуи, из зависимостей

screen /dev/ttyUSB0 9600

если надо еще меньше зависимостей, то это только из /dev/tty0 читать-писать

minicom, GtkTerm.

GtkTerm не развивается, имеет ряд неисправленных ошибок. Так что рекомендую осилить minicom.

Есть очень минималистичный picocom.

> миником и так без гуи

Уродский «псевдооконный» интерфейс в консоли ничем не лучше гуя. И вообще миником корявый и не unix-style.

Можно без ncurses, например kermit. Много лет пользуюсь именно им и доволен как слон.

Еще можно клепать перлоскрипты под конкретную задачу на Device::SerialPort + Term::Readline. В них легко делать дополнение по табу, цветной вывод и кучу других полезных фич. История и редактирование в стиле vim/emacs прилагается.

Источник

Заметки о Linux, электронике, радиолюбительстве

Личный блог Вадима Кузнецова, RA3XDH

воскресенье, 27 июля 2014 г.

Работа с последовательным портом из консоли Linux

В предыдущем посте было показано как запустить UART на отладочной плате Launchpad для MSP430. Теперь рассмотрим как общаться с платой при помощи средств командной строки Linux. Используется плата с прошивкой из предыдущего поста. Для подробностей – см. под кат

Как известно, все устройства последовательных портов представлены файлами устройств в каталоге /dev.Через эти файлы и происходит общение ОС Linux с внешним устройством на последовательном порту. Чтобы передать что-то на внешнее устройство нужно записать данные в файл устройства, а чтобы считать информацию из устройства — прочитать данные из файла устройства. Это можно делать при помощи команд cat и echo так же как для обычных файлов на диске. Или внутри программы на С при помощи вызовов ioctl(), read() и write() или библиотеки termios.

Физическим последовательным портам RS232, к которым подключались диалапные модемы на старых компьютерах, соответствуют файлы устройств /dev/ttyS*, начиная с /dev/ttyS0. Виртуальным последовательным портам, которые создаются различными конвертерами USB UART соответствуют файлы устройств /dev/ttyUSB* и /dev/ttyACM*. Ядро Linux автоматически разпознаёт подключенное устройство, загружает для него драйвер и создаёт файл устройства. Вручную устанавливать драйвер, как в ОС Windows не требуется. Например, если подключить к USB преобразователь USB UART FT232, то создаётся файл устройства /dev/ttyUSB0, с которым можно работать также как и с обычным последовательным портом. На плате Launcpad находится микросхема TUSB3410, которая тоже представляет собой конвертер USB UART. Если подключить её к USB, то создаётся файл устройства /dev/ttyACM0. Чтобы общаться с платой нужно что-либо писать/читать с этого файла.

Чтобы пользователь мог читать или писать в файл устройства последовательного порта, его нужно добавить в группу dialout. Иначе работать с последовательным портом сможет только администратор root.

Простейшим приложением с графическим интерфейсом, которое работает с последовательным портом, является CuteCOM. Он обычно уже есть в вашем дистрибутиве Linux. Его можно установить из репозиториев. При помощи CuteCOM мы работали с платой в предыдущем посте. Выглядит CuteCOM вот так:

Работать с ним крайне просто. Указываем нужное устройство, если его нет в списке, то его можно впечатать вручную. Затем указываем скорость и параметры и нажимаем OpenDevice. В окне видим данные, которые пришли от устройства. В поле ввода в нижней части можем печать строку символов, которые предаются на устройство. Чтобы передать данный нажимаем Enter и смотрим ответ устройства в окне.

Теперь рассмотрим как работать с COM-портом из командной строки. Для этого служат три команды: stty, cat и echo.

Команда stty устанавливает параметры и скорость COM-порта. Её формат:

stty -F

Чтобы установить параметры для платы Launchpad для соединения на скорости 9600 нужно выполнить:

$ stty 9600 -F /dev/ttyACM0 raw -echo

Параметр raw устанавливает, что данные в компьютер передаются байт за байтом так же как приходят в порт без преобразований. Аппаратное управление потоком отключено. Подробнее о том, что включает и выключает raw – см. man stty. Если не включить raw, то скорее всего ничего работать не будет.

Теперь в той же консоли нужно набрать

$ cat /dev/ttyACM0

И можно смотреть данные, которые приходят от платы. Выход – нажать Ctrl+C.

Теперь нажимаем на плате RESET и видим, что в консоди напечатался текст.

Чтобы передать в плату данные, в другой консоли нужно использовать команду echo и перенаправление вывода в файл устройства. Наберём в другой консоли:

$ echo "1">/dev/ttyACM0

Видим, что на плате загорелся красный светодиод и в первой консоли было выдано сообщение об этом. Чтобы убрать конец строки в передаваемых данных, то нужно использовать запуск echo -n, а чтобы интерпретировать 16-ричные коды — нужно echo -e. Ключи можно комбинировать.

В итоге должно получиться так:

Чтобы увидеть 16-ричные коды данных, приходящих от устройства, нужно использовать команду hexdump:

$ cat /dev/ttyACM0|hexdump -C

Получится вот так:

Чтобы иметь вывод данных от устройство на экран и в текстовый файл нужно использовать tee:

Источник

Работа с последовательным портом из Linux

Содержание

Последовательные порты и их реализация в Linux

Монументальное описание последовательных портов – http://www.tldp.org/HOWTO/Serial-HOWTO.html. Краткий неточный пересказ:

  • в последовательный порт можно посылать данные и получать оттуда данные;
  • в Linux последовательные порты представлены в виде псевдофайлов из папки /dev/, например, в Wiren Board это могут быть /dev/ttyAPP0, /dev/ttyNSC1, /dev/ttyUSB0 (у всех в названии есть tty).

Перед тем, как начать работать с портом, надо настроить его скорость и другие параметры в зависимости от того, какое устройство к нему подключено:

  • скорость в битах в секунду. Самое популярное значение 115200;
  • количество бит в символе, чётность, количество стоп-битов. Самая популярная конфигурация называется 8N1 – восемь бит в символе, проверки чётности нет, один стоп-бит;
  • аппаратный и программный контроль потока. Если не знаете, поставьте “нет” в обоих настройках.

Определение занят ли порт и монопольное использование

Работать с последовательным портом может (обычно) только один процесс. Если порт “занят” – то попытка передать/получить через него обычно неудачна. Для того чтобы определить кто занял порт, можно использовать lsof/ Сначала установим:

Потом запустим с именем интересующего нас файла (устройства):

Если вывод пуст – порт свободен. Если нет – то будет показан занявший процесс.

Порты /dev/ttyRS485-1 и /dev/ttyRS485-2 (если есть сконфигурированные на них устройства) обычно заняты сервисом wb-mqtt-serial Чтобы его остановить на время работы с портом нужно выполнить:

Либо отключить порт в конфигурации wb-mqtt-serial сняв галочку “Enable port” (Не забудьте сохранить кнопкой “Save” вверху).

serial_tool – утилита для отправки и получения наборов бит

Чтобы отправлять и получать данные в шестнадцатеричном формате (то есть фактически побитово, группами по четыре бита), используйте утилиту serial_tool. Она предустановлена на контроллерах Wiren Board.

Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485).

minicom – утилита для отправки и получения символьных команд

Самая удобная утилита для работы с последовательным портом из консоли – minicom (есть в стандартном образе Wiren Board). Minicom удобно пользоваться для работы с устройствами, которые управляются текстовыми командами или выводят текстовые сообщения. Примерами таких устройств являются GSM-модемы (управляются AT-командами), в том числе встроенный в Wiren Board GSM-модуль; GPS-модули, работающие по протоколу NMEA и т.п.

Краткая инструкция (считаем, что мы будем работать с портом /dev/ttyAPP0):

  • В первый раз запускаем minicom с ключом, создающим профиль работы с портом (в нём хранятся номер порта, скорость передачи данных, чётность, и т.д.):
  • Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyAPP0, скорость и чётность – 115200, 8N1, Hardware flow control – No, Software flow control – No
  • Сохранить настройки: Save setup as _dev_ttyAPP0
  • Далее запускать как:

(все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)

  • Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться.

Источник


Adblock
detector