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