ESPShell for Arduino :: Автоматизация

[ На русском ] ↔ [ English ]

КОМАНДЫ, ВЛИЯЮЩИЕ НА ИНТЕРФЕЙС ESPSHELL

Существуют случаи, когда 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 в терминал.

  • Сообщения об ошибках не отображаются.
  • Ввод пользователя не отображается.
  • Команды исполняются, но ничего не выводится.
Этот режим используется, когда ESPShell не должен мешать выводу скетча. Скетч полностью управляет последовательным портом, а 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).