
Tio-это инструмент последовательного устройства, который имеет прямую командную строку и интерфейс файла конфигурации, чтобы легко подключиться к последовательным устройствам TTY для основных операций ввода-вывода.

Чтобы сделать более простой инструмент последовательного устройства для работы с последовательными устройствами TTY с меньшим вниманием к классическим функциям терминала/модема и больше внимания уделяется потребностям встроенных разработчиков и хакеров.
Первоначально Tio был создан в качестве альтернативы экрану для подключения к последовательным устройствам при использовании в комбинации с TMUX.
Для получения дополнительной информации, пожалуйста, см. Документацию на странице MAN здесь.
Интерфейс командной строки прост, как отражено на выходе от tio --help :
Usage: tio [<options>] <tty-device|profile|tid>
Connect to TTY device directly or via configuration profile or topology ID.
Options:
-b, --baudrate <bps> Baud rate (default: 115200)
-d, --databits 5|6|7|8 Data bits (default: 8)
-f, --flow hard|soft|none Flow control (default: none)
-s, --stopbits 1|2 Stop bits (default: 1)
-p, --parity odd|even|none|mark|space Parity (default: none)
-o, --output-delay <ms> Output character delay (default: 0)
-O, --output-line-delay <ms> Output line delay (default: 0)
--line-pulse-duration <duration> Set line pulse duration
-a, --auto-connect new|latest|direct Automatic connect strategy (default: direct)
--exclude-devices <pattern> Exclude devices by pattern
--exclude-drivers <pattern> Exclude drivers by pattern
--exclude-tids <pattern> Exclude topology IDs by pattern
-n, --no-reconnect Do not reconnect
-e, --local-echo Enable local echo
--input-mode normal|hex|line Select input mode (default: normal)
--output-mode normal|hex|hexN Select output mode (default: normal)
-t, --timestamp Enable line timestamp
--timestamp-format <format> Set timestamp format (default: 24hour)
--timestamp-timeout <ms> Set timestamp timeout (default: 200)
-l, --list List available serial devices, TIDs, and profiles
-L, --log Enable log to file
--log-file <filename> Set log filename
--log-directory <path> Set log directory path for automatic named logs
--log-append Append to log file
--log-strip Strip control characters and escape sequences
-m, --map <flags> Map characters
-c, --color 0..255|bold|none|list Colorize tio text (default: bold)
-S, --socket <socket> Redirect I/O to socket
--rs-485 Enable RS-485 mode
--rs-485-config <config> Set RS-485 configuration
--alert bell|blink|none Alert on connect/disconnect (default: none)
--mute Mute tio messages
--script <string> Run script from string
--script-file <filename> Run script from file
--script-run once|always|never Run script on connect (default: always)
--exec <command> Execute shell command with I/O redirected to device
-v, --version Display version
-h, --help Display help
Options and profiles may be set via configuration file.
In session you can press ctrl-t ? to list available key commands.
See the man page for more details.
По умолчанию TIO автоматически подключается к предоставленному устройству TTY. Если устройство не присутствует, Tio будет ждать, пока он появится, а затем подключится. Если соединение потеряно (например, устройство отключено), оно будет ждать появления устройства, а затем повторно подключится. Однако, если предоставлена опция --no-reconnect , TIO выйдет, если устройство отсутствует или у установленного соединения потеряно.
Типичное использование без опций:
$ tio /dev/ttyUSB0
Что соответствует обычно используемым параметрам по умолчанию:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
Список доступных серийных устройств:
$ tio --list
Device TID Uptime [s] Driver Description
----------------- ---- ------------- ---------------- --------------------------
/dev/ttyS4 BaaB 19526.576 port 16550A UART
/dev/ttyS5 eV0Z 19525.845 port 16550A UART
/dev/ttyUSB1 bCC2 1023.274 ftdi_sio TTL232R-3V3
/dev/ttyUSB0 SPpw 978.527 ftdi_sio TTL232RG-VREG3V3
/dev/ttyACM0 i5q4 2.079 cdc_acm ST-Link VCP Ctrl
By-id
--------------------------------------------------------------------------------
/dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
/dev/serial/by-id/usb-FTDI_TTL232RG-VREG3V3_FT1NELUB-if00-port0
/dev/serial/by-id/usb-STMicroelectronics_STLINK-V3_004900343438510234313939-if02
By-path
--------------------------------------------------------------------------------
/dev/serial/by-path/pci-0000:00:14.0-usb-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.3:1.2
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.3:1.2
Configuration profiles (/home/lundmar/.config/tio/config)
--------------------------------------------------------------------------------
rpi3 stm32 esp32 am64-evm
imx8mp-evk nucleo-h743zi2 usb-devices
Рекомендуется подключить последовательные устройства TTY с помощью ID:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
ПРИМЕЧАНИЕ. Использование последовательных устройств с помощью ID помогает гарантировать, что TIO автоматически восстанавливается в одном и том же последовательном устройстве при приостановке, даже когда он перечисляется по -разному.
Если не доступно последовательное устройство от идентификатора, рекомендуется подключить с помощью идентификатора топологии (TID):
$ tio bCC2
Примечание: TID уникален и будет оставаться прежним, если ваш USB -последовательный порт подключается к той той топологии USB (те же порты, те же концентраторы, те же соединения и т. Д.). Таким образом, TIO возможно успешно воссоединиться с тем же устройством.
Автоматически подключите к первым новому появлению последовательного устройства:
$ tio --auto-connect new
Автоматически подключите к последнему зарегистрированному последовательному устройству:
$ tio --auto-connect latest
Можно использовать варианты исключения, чтобы повлиять на то, какие последовательные устройства участвуют в стратегии автоматического соединения:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
И исключить драйверы по образцу:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
ПРИМЕЧАНИЕ. Соответствие шаблона поддерживает '*' и '?'. Используйте разделение запятой, чтобы определить несколько шаблонов.
Чтобы включить драйверы по конкретному шаблону, просто отрицайте вариант Exclude:
$ tio --auto-connect new --exclude-drivers !("cp2102")
Войдите в файл с помощью автогенерированного имени файла:
$ tio --log /dev/ttyUSB0
Войдите в файл с конкретным именем файла:
$ tio --log --log-file my-log.txt
Включите ISO8601 TimeSts Per Line:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
Вывод в шестнадцатурой ширины 16:
$ tio --output-mode hex16 /dev/ttyUSB0
Перенаправить ввод/вывод в сетевой розетку IPv4 на порту 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
Данные о трубе на последовательное устройство:
$ cat data.bin | tio /dev/ttyUSB0
Манипулировать линиями модема на подключении:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
Команда труб на последовательное устройство и дождитесь отклика линии в течение 1 секунды:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
Различные в сессионных командах поддерживаются. Когда Tio запускается, нажмите Ctrl-T? Чтобы перечислить доступные команды ключей.
[15:02:53.269] Key commands:
[15:02:53.269] ctrl-t ? List available key commands
[15:02:53.269] ctrl-t b Send break
[15:02:53.269] ctrl-t c Show configuration
[15:02:53.269] ctrl-t e Toggle local echo mode
[15:02:53.269] ctrl-t f Toggle log to file
[15:02:53.269] ctrl-t F Flush data I/O buffers
[15:02:53.269] ctrl-t g Toggle serial port line
[15:02:53.269] ctrl-t i Toggle input mode
[15:02:53.269] ctrl-t l Clear screen
[15:02:53.269] ctrl-t L Show line states
[15:02:53.269] ctrl-t m Change mapping of characters on input or output
[15:02:53.269] ctrl-t o Toggle output mode
[15:02:53.269] ctrl-t p Pulse serial port line
[15:02:53.269] ctrl-t q Quit
[15:02:53.269] ctrl-t r Run script
[15:02:53.269] ctrl-t R Execute shell command with I/O redirected to device
[15:02:53.269] ctrl-t s Show statistics
[15:02:53.269] ctrl-t t Toggle line timestamp mode
[15:02:53.269] ctrl-t v Show version
[15:02:53.269] ctrl-t x Send file via Xmodem
[15:02:53.269] ctrl-t y Send file via Ymodem
[15:02:53.269] ctrl-t ctrl-t Send ctrl-t character
При необходимости клавиша префикса (CTRL-T) может быть переназначена через файл конфигурации.
Параметры могут быть установлены через файл конфигурации, впервые найденные в любом из следующих местоположений в перечисленном заказе:
Файл конфигурации поддерживает профили с использованием названных разделов, которые могут быть активированы через командную строку по имени или шаблону. В профиле указывается, к какому устройству TTY подключить и другие параметры.
Пример файла конфигурации:
[default]
baudrate = 115200
databits = 8
parity = none
stopbits = 1
color = 10
[rpi3]
device = /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTGQVXBL-if00-port0
no-reconnect = true
log = true
log-file = rpi3.log
line-pulse-duration = DTR=200,RTS=150
color = 11
[svf2]
device = /dev/ttyUSB0
baudrate = 9600
script = expect("login: "); write("rootn"); expect("Password: "); write("rootn")
color = 12
[esp32]
device = /dev/serial/by-id/usb-0403_6014-if00-port0
script = set{DTR=high,RTS=low}; msleep(100); set{DTR=low,RTS=high}; msleep(100); set{RTS=low}
script-run = once
color = 13
[usb-devices]
pattern = ^usb([0-9]*)
device = /dev/ttyUSB%m1
color = 14
Чтобы использовать конкретный профиль по имени, просто запустите Tio как SO:
$ tio rpi3
Или по схеме матча:
$ tio usb12
Еще один более сложный пример файла конфигурации доступен здесь.
Tio Supputs Lua скриптирует, чтобы легко автоматизировать взаимодействие с устройством TTY.
В дополнение к API TIO LUA предоставляет следующие функции:
expect(string, timeout)
Expect string - waits for string to match or timeout before continueing.
Supports regular expressions. Special characters must be escaped with '\'.
Timeout is in milliseconds, defaults to 0 meaning it will wait forever.
Returns 1 on successful match, 0 on timeout, or -1 on error.
On successful match it also returns the match string as second return value.
read(size, timeout)
Read from serial device. If timeout is 0 or not provided it will wait
forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns read string as second return value.
read_line(timeout)
Read line from serial device. If timeout is 0 or not provided it will
wait forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns the string that was read as second return value.
Also emits a single timestamp to stdout and log file per options.timestamp
and options.log.
write(string)
Write string to serial device.
Returns number of bytes written on success or -1 on error.
send(file, protocol)
Send file using x/y-modem protocol.
Protocol can be any of XMODEM_1K, XMODEM_CRC, YMODEM.
tty_search()
Search for serial devices.
Returns a table of number indexed tables, one for each serial device
found. Each of these tables contains the serial device information accessible
via the following string indexed elements "path", "tid", "uptime", "driver",
"description".
Returns nil if no serial devices are found.
set{line=state, ...}
Set state of one or multiple tty modem lines.
Line can be any of DTR, RTS, CTS, DSR, CD, RI
State is high, low, or toggle.
sleep(seconds)
Sleep for seconds.
msleep(ms)
Sleep for miliseconds.
exit(code)
Exit with exit code.
Доступны пакеты для различных распределений GNU/Linux. Пожалуйста, проконсультируйтесь с инструментом менеджера пакетов, чтобы найти и установить TIO.
Если вы хотите, чтобы Tio включена в ваше любимое распространение, пожалуйста, обратитесь к команде по борьбе с пакетами.
Установите последнюю стабильную версию:
$ snap install tio --classic
Примечание. В настоящее время классическое ограничение требуется из -за ограничений платформы Snapraft. Смотрите вопрос № 187 для обсуждения.
Если у вас установлен варева:
$ brew install tio
Если у вас установлен MSYS2:
$ pacman -S tio
Последние выпуски источника можно найти здесь.
Перед выполнением шагов установки убедитесь, что у вас установлены библиотеки Glib и Lua. Например:
$ sudo apt install libglib2.0-dev liblua5.2-dev
Установите шаги:
$ meson setup build
$ meson compile -C build
$ meson install -C build
См. Meson_options.txt для специфических вариантов сборки TIO.
Примечание. Шаги установки Meson могут отличаться в зависимости от вашей конкретной системы.
Получить ошибки доступа разрешения, пытаясь открыть последовательное устройство?
Добавьте вашего пользователя в группу, которая позволяет постоянно доступ к последовательному устройству. Например, чтобы добавить вашего пользователя в группу «Dialout» Do:
sudo usermod -a -G dialout < username >Переключитесь на группу "Dialot", временную, но сразу же для этого сеанса.
newgrp dialoutЭто проект с открытым исходным кодом - все взносы (отчеты об ошибках, код, документ, идеи и т. Д.) Приглашаются.
Пожалуйста, используйте Fulce Tracker и функции запроса Github.
Кроме того, если вы найдете это бесплатное программное обеспечение с открытым исходным кодом, пожалуйста, не стесняйтесь сделать пожертвование по вашему выбору:

Отправить отчеты об ошибках через github: https://github.com/tio/tio/issues
Посетите tio.github.io
tio is gplv2+. См. Файл лицензии для получения более подробной информации.
Поддерживается Мартином Лундом <[email protected]>
Смотрите файл авторов для полного списка участников.