Существуют случаи, когда ESPShell управляется другим программным обеспечением — то есть команды вводит и ответы читает не человек. Если это интерфейс Человек↔Машина, мы обычно ожидаем, что Машина будет отображать наш ввод. Именно поэтому мы видим, что печатаем в терминальной программе, и можем редактировать командную строку. А вот в интерфейсе Машина↔Машина нежелателен любой эхо-вывод, так как он будет мешать выводу ESPShell — машине придётся фильтровать собственный ввод.
ESPShell решает эту задачу так же, как это делают модемы. Модем — это пример как интерфейса Человек↔Машина (например, ввод AT-команд в терминале), так и Машина↔Машина (например, драйвер Windows общается с модемом напрямую). В модемах можно включить или отключить эхо-ввод с помощью AT-команд ("ATE1" и "ATE0""). В ESPShell те же функции выполняются командами "echo on" и "echo off".
Весь вывод ESPShell начинается с символа "%", поэтому его легко фильтровать и обрабатывать при необходимости.
В таблице ниже перечислены команды, влияющие на интерфейс ESPShell и полезные при автоматизированном доступе к оболочке. Эти команды **не отображаются** в списке доступных команд (выводимом через "?" или "help"), поскольку они используются редко и были скрыты.
Параметр | Описание |
---|---|
history [on|off] |
Включает или отключает историю команд. По умолчанию история включена и доступна через стрелки ↑ и ↓ (в Arduino Serial Monitor это не работает). ESPShell сохраняет до 20 последних команд в буфере истории. Размер буфера можно изменить, отредактировав файл espshell.h (см. раздел "Compile-time settings" в начале файла). Команда "history" без аргументов показывает текущий статус: esp32#>history % History is enabled esp32#> Значение по умолчанию — "enabled" (включено). При отключении истории также очищается память, использованная под сохранённые команды. |
colors [on|off|auto] |
Включает или отключает поддержку ANSI-цветов в терминале. Если вы используете терминальные программы вроде PuTTY или TeraTerm — лучше установить значение "on". В простых терминалах, таких как Arduino Serial Monitor, нужно ставить "off", иначе экран будет заполнен непонятными символами: 1;36]m ]]J 7]m и т.п. Значение по умолчанию — "auto". В этом режиме ESPShell пытается определить тип терминала и включить/отключить цвета автоматически. Определение происходит по характеру входящих данных: любые нажатия клавиш с низкими кодами (которые никогда не посылаются Arduino Serial Monitor) включают цветной режим. Если ваш терминал не поддерживает цвета, а ESPShell считает, что поддерживает — вручную отключите цвет с помощью "colors off". Выполнение команды без аргументов показывает текущий режим:
esp32#>colors % Color is "auto" esp32#> |
echo [on|off|silent] |
Управляет отображением вывода оболочки и эхо-ввода пользователя. По умолчанию всё, что вводит пользователь, отображается обратно ESPShell. Это поведение можно изменить командой "echo". Вызов команды без аргументов покажет текущий режим:
esp32#>echo % Echo is "on" esp32#> echo off: Отключает отображение приглашения и вводимых символов. Ввод продолжает обрабатываться, но не отображается. Команда влияет только на отображение ввода; вывод команд и сообщений (например, ошибок) не подавляется. Это эквивалент команды модема "ATE0". Даже при отключённом эхо всё равно можно пользоваться редактированием строк и прокруткой истории — просто вы этого не увидите. echo on: Включает отображение ввода пользователя. Это поведение по умолчанию, эквивалент "ATE1". echo silent: Полностью отключает любой вывод ESPShell в терминал.
|
tty NUMBER |
Изменяет источник ввода ESPShell на другой UART. По умолчанию вход осуществляется через UART0 (или USB-CDC), но его можно изменить командой "tty". Это полезно в автоматизации, когда нужно передать управление оболочкой другому пользователю (например, подключённому к UART1). Командой можно "отдать" управление, но не "забрать" обратно — чтобы вернуть контроль, пользователь на UART1 должен выполнить "tty 0". esp32#>tty 1 % See you there UART, на который осуществляется переключение, должен быть инициализирован — иначе команда завершится ошибкой. esp32#>tty 1 % UART1 is down. Use command "up" to initialize it esp32#> NUMBER — номер UART (от 0 до 3, в зависимости от модели ESP32) или 99 для переключения на интерфейс USB-CDC (например, доступен на ESP32-S3). |