Skip to content

danusha2345/uart_term

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UART Терминал (uart_term)

Кроссплатформенный графический терминал для Serial (UART) и BLE, написанный на Rust с использованием фреймворка egui. Предназначен для хардверной отладки, реверсинга и анализа произвольных бинарных протоколов. Поддерживает четыре режима фрейминга (Delimiter, SLIP, COBS, Raw) и включает автоматическое распознавание UBX-пакетов u-blox.

Основные возможности

  • Два COM-порта: Одновременное подключение и мониторинг двух UART-интерфейсов с цветовой маркировкой пакетов (зелёный/синий) и автоматической сортировкой по временным меткам.
  • Bluetooth Low Energy (BLE): Сканирование и подключение к BLE устройствам. Автоматическое определение сервиса Nordic UART Service (NUS) для беспроводной передачи данных.
  • Система декодеров: Четыре режима фрейминга — Raw (без разбиения), Delimiter (по байтовому разделителю), SLIP (RFC 1055) и COBS. Каждое соединение (UART1, UART2, BLE) выбирает свой декодер независимо.
  • Гибкий разделитель: Ввод разделителя в HEX (B5 62), ASCII в кавычках ("$", "GP") или escape-последовательностями (\n, \r\n, \0).
  • Автоопределение baud rate: Кнопка "Auto" перебирает стандартные скорости и выбирает наиболее подходящую по количеству распознанных пакетов.
  • Настройка порта: Data bits (5–8), parity (None/Odd/Even), stop bits (1/2), flow control (None/Xon-Xoff/RTS-CTS).
  • Форматы отображения: Просмотр трафика в форматах HEX, ASCII или комбинированном HEX+ASCII.
  • Фильтрация пакетов: Фильтрация на лету по HEX-префиксу (например, B5 62 06 41). Фильтр шума автоматически скрывает мусорные пакеты от плавающих линий.
  • Логирование: Сохранение трафика в файл (.txt / .log) в выбранном формате (HEX, ASCII, HEX+ASCII). Кнопка "+" создаёт новый лог-файл без остановки записи.
  • Управление линиями: Ручное переключение DTR и RTS для сброса микроконтроллеров или управления потоком.
  • Продвинутая отправка: Отправка HEX-пакетов с настраиваемыми окончаниями строк (None, CR, LF, CRLF). История команд по стрелкам Вверх/Вниз.
  • Автопрокрутка и Таймлайн: Плавная автопрокрутка с метками времени, направлением (RX/TX), источником и цветовой маркировкой.
  • Контекстное меню: Правый клик по пакету — копирование payload в формате HEX или ASCII.

Стек технологий

Проект полностью написан на Rust и опирается на следующие библиотеки:

  • eframe / egui: Библиотека GUI (Immediate mode).
  • serialport: Кроссплатформенный доступ к COM-портам.
  • btleplug: Работа с Bluetooth Low Energy (BLE) на разных ОС.
  • tokio: Асинхронный рантайм для обработки BLE-событий.
  • rfd: Нативные системные диалоги для сохранения логов.

Сборка и запуск

Убедитесь, что у вас установлены Rust и Cargo.

Зависимости (Linux)

На Linux для успешной компиляции egui, btleplug и serialport могут потребоваться системные библиотеки. Пример для Ubuntu/Debian:

sudo apt-get install -y libxkbcommon-dev libwayland-dev libudev-dev pkg-config libdbus-1-dev

Компиляция

Для прямого запуска:

cargo run --release

Для сборки оптимизированного бинарного файла:

cargo build --release

Скомпилированный бинарник будет находиться по пути target/release/uart_term.

Советы по использованию

  1. Протокол UBX: Разделитель по умолчанию — B5 62. Терминал автоматически разбивает поток на u-blox пакеты и подписывает их (NAV-PVT, CFG-MSG и т.д.).
  2. NMEA и другие текстовые протоколы: Установите разделитель "$" или \n — терминал будет разбивать поток по этим символам.
  3. SLIP/COBS: Выберите соответствующий декодер в выпадающем списке — разделитель не требуется.
  4. Неизвестный baud rate: Нажмите "Auto" — терминал переберёт стандартные скорости и выберет оптимальную.
  5. Беспроводной UART (BLE): Переключитесь в режим BLE, нажмите "Scan" и выберите устройство. NUS-характеристики определяются автоматически.
  6. Копирование данных: Правый клик по пакету — копирование payload в HEX или ASCII.

About

UART HEX Terminal — serial & BLE monitor built with Rust + egui

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages