Добавить очереди операций PBUS/SBUS, общую консоль, настройки Candle и SLCAN, декодеры DSView и обработку плотных графиков. Обновить протокол Бальзам и проверки общих компонентов.
5.4 KiB
Общая консоль 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.