Files
templates/python/set_devices/qt_ports/CONSOLE.md
Andrey a5e46d4627 Расширить обмен по шинам, CAN-адаптеры и обработку графиков
Добавить очереди операций PBUS/SBUS, общую консоль, настройки Candle и SLCAN, декодеры DSView и обработку плотных графиков. Обновить протокол Бальзам и проверки общих компонентов.
2026-10-17 14:36:14 +03:00

5.4 KiB
Raw Blame History

Общая консоль Qt

set_devices.qt_ports.console.ConsoleView — общий порт представления для журналов SETGUI. Он не управляет портами, опросом и отправкой команд.

Приложение → ConsoleView → Qt 6 / Qt 5. Протокольные декодеры передают готовые подписи и необязательные исходные байты; консоль не вычисляет CRC.

Файл Назначение и зависимости
set_devices/qt_ports/console.py Виджет и файловый экспорт; stdlib и PySide6 либо PySide2
examples/console_examples.py По одному примеру служебной консоли, CAN и RS485; действующие кодеки templates
tests/test_console.py Проверки истории, паузы, фильтров, очистки и UTF-8; pytest и Qt

Возможности, собранные из журналов SETGUI

Возможность Источник / поведение общего компонента
Очистка Канальные консоли платы, TX/RX, Modbus; удаляет также скрытые строки и очередь обновления
Пауза Эмуляторы CAN; экран заморожен, история продолжает принимать данные до заданного предела
TX/RX Диагностика и эмуляторы; служебные ошибки без направления остаются видны
Автопрокрутка Мониторы CAN и RS; её можно отключить для чтения истории
Цвета Консоль платы и монитор шины; сохраняются при переразборе фильтра
HEX/ASCII Диагностика RS; формат применяется к явно переданному payload
Сохранение Мониторы CAN и RS; экспорт фактически видимого текста в UTF-8
Поиск, копирование, перенос, масштаб Общие инструменты всех подключённых текстовых журналов

Подключение

from set_devices.qt_ports.console import ConsoleView  # Подключаем общий порт представления templates.
console = ConsoleView(limit=4000, payloads=True)  # Храним не более 4000 строк, включая скрытые и поступившие на паузе.
layout.addWidget(console.panel, 1)  # В layout вставляется контейнер с инструментами и редактором.
console.append_message("RX ответ", direction="RX", payload=b"OK")  # Передаём готовую подпись и байты без повторного разбора протокола.
console.append_message("Ошибка связи", color="#ff7b7b")  # Служебная ошибка остаётся видна при выключенных TX и RX.
console.userCleared.connect(clear_frame_history)  # Отдельный буфер кадров очищается тем же пользовательским действием.

Старые вызовы appendPlainText, appendHtml, setPlainText, clear, toPlainText и setMaximumBlockCount поддерживаются. setPlainText заменяет снимок истории, учитывая текущую паузу. Для внешней истории кадров подключите userCleared: программный clear() повторно этот сигнал не испускает.

directions=False скрывает встроенные флажки, если приложение уже имеет свои фильтры TX/RX. payloads=True показывает форматы HEX/ASCII. События должны поступать в GUI-потоке Qt, как при работе с обычным QPlainTextEdit.

При заполнении история обновляет экран пачками с интервалом 100 мс. Количество строк на панели относится ко всей ограниченной истории. На паузе сохранение и копирование используют замороженный видимый экран.

Три запускаемых примера

Из каталога python, с установленными зависимостями .[qt]:

python examples/console_examples.py --kind service
python examples/console_examples.py --kind can
python examples/console_examples.py --kind rs485

Без --kind открываются все три примера. Аппаратура не требуется. В каждом примере можно проверить очистку, паузу, поиск, TX/RX, экспорт, копирование, автопрокрутку, перенос и масштаб; в CAN и RS485 — HEX/ASCII.

Используется в SETGUI: CAN/RS485 и служебная консоль ESP, журналы соединения и TX/RX, эмуляторы CAN, CAN FD, Modbus, диагностика ПМ35 и ТМС2812, спектр и логический анализатор Altera.