Терминал работает через Web Serial — стандарт WHATWG, который даёт странице доступ к последовательному порту с разрешения пользователя. Сайт видит только тот порт, который вы сами выбрали в окне браузера, и только пока страница открыта. Всё, что приходит и уходит, остаётся в браузере: на сервер терминал ничего не отправляет.
Как подключиться
- Подключите устройство: адаптер USB-UART, плату Arduino или ESP32.
- Выберите скорость и формат кадра — такие же, как в программе устройства. Самый частый формат — 8N1: 8 бит данных, без чётности, 1 стоп-бит.
- Нажмите «Подключиться» и выберите порт в окне браузера.
- Читайте ответ в окне терминала, а команды набирайте в строке внизу: Enter отправляет, стрелки ↑ и ↓ листают историю.
| Браузер | Web Serial |
|---|---|
| Chrome, Edge, Opera | с версии 89 |
| Firefox | с версии 151 |
| Chrome для Android | с версии 148 |
| Safari | нет |
Параметры порта
Web Serial принимает 7 или 8 бит данных, 1 или 2 стоп-бита, чётность «нет», «чёт» или «нечет» и аппаратное управление потоком по линиям RTS и CTS. Форматов с 5 и 6 битами данных, полутора стоп-битами и чётностью mark и space в стандарте нет. Каждый байт на линии — это старт-бит, биты данных, бит чётности, если он есть, и стоп-биты, поэтому предельный поток
Для 115 200 бод в формате 8N1 кадр — 10 бит, и по линии проходит не больше 11 520 байт в секунду. Как устроен кадр по битам и какой допуск по скорости выдерживает приёмник, показывает калькулятор кадра UART, а делитель для нужной скорости подберёт калькулятор скорости UART.
Текст и HEX
В текстовом виде строки разделяются по CR LF, LF или одиночному CR, а управляющие коды видны значками: ESC — ␛, нулевой байт — ␀. Кодировка — UTF-8, Windows-1251, KOI8-R или CP866; многобайтный символ UTF-8, разорванный между двумя порциями данных, собирается правильно.
В виде HEX приём делится на пакеты по паузе: порции, между которыми прошло меньше заданного времени (по умолчанию 20 мс), склеиваются в один пакет. Так ответ устройства, прочитанный браузером в несколько приёмов, встаёт одной строкой — её можно вставить в разбор кадра Modbus RTU.
Отправка
| Последовательность | Байт | Что это |
|---|---|---|
\r | 0D | CR, возврат каретки |
\n | 0A | LF, перевод строки |
\t | 09 | табуляция |
\0 | 00 | нулевой байт |
\e | 1B | ESC |
\\ | 5C | обратная косая черта |
\xNN | NN | любой байт |
В текстовом режиме к строке добавляется выбранный конец строки: команда AT с CR LF уходит байтами 41 54 0D 0A. Русские буквы кодируются в выбранной кодировке. В режиме HEX байты отправляются ровно так, как набраны, без конца строки: например, запрос Modbus 01 03 00 00 00 0A C5 CD.
DTR и RTS
Кнопки DTR и RTS включают и выключают выходные линии адаптера. Многие платы используют их для сброса: на платах ESP32 и ESP8266 эти линии через два транзистора управляют сбросом EN и выводом выбора загрузки — так esptool сам переводит чип в режим прошивки, подробнее — в статье «Прошивка ESP32: esptool, режим загрузки и частые ошибки». По документации esptool одновременное включение обеих линий чип не сбрасывает, а включение одной из них может его перезапустить или удержать в сбросе. Подробнее о линиях и уровнях — в разделах UART и RS-232.
Ошибки
Браузер сообщает об ошибках приёма, и терминал показывает их в журнале серым. Ошибка кадра (нет стоп-бита) почти всегда значит неверную скорость или формат. BREAK означает, что приёмник увидел сигнал прерывания — долгий ноль на линии. Переполнение буфера — данные шли быстрее, чем страница успевала их читать. Если устройство выдернули, порт закрывается сам. Журнал можно сохранить в текстовый файл кнопкой «Сохранить» — со временем каждой строки.
Частые вопросы
В каком браузере работает терминал COM-порта?
Там, где есть Web Serial: по данным MDN это Chrome, Edge и Opera с версии 89, Firefox с версии 151 и Chrome для Android с версии 148. В Safari Web Serial нет. Страница должна быть открыта по HTTPS, а порт браузер показывает только после нажатия кнопки.
Почему порт не открывается?
Чаще всего его держит другая программа: монитор порта Arduino IDE, PuTTY или второй терминал. Закройте её и подключитесь снова. Если в списке нет нужного порта, проверьте кабель и драйвер адаптера (CH340, CP210x, FTDI).
Почему вместо текста приходят непонятные символы?
Обычно не совпадает скорость: устройство передаёт на 9600 бод, а терминал слушает на 115 200, — тогда ещё бывают ошибки кадра. Если английский текст читается, а русский нет, поменяйте кодировку на ту, в которой текст записан в программе устройства: UTF-8, Windows-1251, KOI8-R или CP866.
Как отправить байт 0x1B или Ctrl+C?
В текстовом режиме — escape-последовательностью: \e или \x1B для ESC, \x03 для Ctrl+C, \0 для нулевого байта. Или переключите ввод в HEX и наберите байты как есть: 1B, 03 — в этом режиме конец строки не добавляется.
Источники
- WHATWG. WebSerial Standard, Living Standard (обновлён 8 октября 2026) — SerialOptions: baudRate обязателен и больше нуля; dataBits 7 или 8 (по умолчанию 8), stopBits 1 или 2 (по умолчанию 1), parity none, even или odd, bufferSize по умолчанию 255, flowControl none или hardware (RTS и CTS); open() отклоняет другие значения; ошибки чтения BreakError, FramingError, ParityError, BufferOverrunError, отключение устройства — NetworkError; setSignals — DTR, RTS и break, getSignals — DCD, CTS, RI, DSR; только защищённый контекст (HTTPS), выбор порта — по действию пользователя; разд. 6.1 — функция политики разрешений serial, по умолчанию 'self'
- MDN. browser-compat-data: api/Serial.json и api/SerialPort.json (коммит 1d670c0, 8 октября 2026) — Serial — Chrome с версии 89 (Edge и Opera — по Chrome), Firefox с версии 151, Chrome для Android с версии 148; Safari и Android WebView — нет
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B), 2020 — разд. 20.4 — кадр UART: старт-бит, 5–9 бит данных младшим битом вперёд, бит чётности и один или два стоп-бита
- Espressif. esptool documentation: Boot Mode Selection — esptool переводит чип в режим загрузки линиями DTR и RTS адаптера USB-UART, подключёнными к EN и выводу выбора загрузки; DTR и RTS активны низким уровнем; при одновременном включении обеих линий схема на двух транзисторах чип не сбрасывает; некоторые ОС и программы включают RTS и DTR при открытии порта
Встроить калькулятор на свой сайт
Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах
<iframe src="https://gaw.ru/embed/serial-terminal/" title="Терминал COM-порта в браузере" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write; serial"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/serial-terminal/">Терминал COM-порта в браузере</a> — GAW.ru</p>Автоподстройка высоты рамки
Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.
<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>Обновлено .
Нашли ошибку в расчёте?