Добавить очереди операций PBUS/SBUS, общую консоль, настройки Candle и SLCAN, декодеры DSView и обработку плотных графиков. Обновить протокол Бальзам и проверки общих компонентов.
69 lines
5.4 KiB
Markdown
69 lines
5.4 KiB
Markdown
# Общая консоль 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 |
|
|
| Поиск, копирование, перенос, масштаб | Общие инструменты всех подключённых текстовых журналов |
|
|
|
|
## Подключение
|
|
|
|
```python
|
|
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]`:
|
|
|
|
```powershell
|
|
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.
|