2.8 KiB
2.8 KiB
RadioPhotonic PCB PC Software
PyQt6-приложение для управления лазерной платой по UART.
Вся рабочая логика сосредоточена в пакете laser_control; старый FreeSimpleGUI и legacy-модули удалены.
Структура
.
├── _device_main.py
├── run
├── run_device_main.bat
├── requirements.txt
├── laser_control/
│ ├── __init__.py
│ ├── constants.py
│ ├── controller.py
│ ├── conversions.py
│ ├── exceptions.py
│ ├── models.py
│ ├── protocol.py
│ ├── transport.py
│ ├── validators.py
│ ├── example_usage.py
│ └── gui/
│ ├── main.py
│ ├── theme.py
│ ├── window.py
│ ├── sections.py
│ └── worker.py
Что поддерживается
- ручной режим:
T1/T2/I1/I2 - live telemetry:
T1/T2, внешние термисторы, фотодиоды,3V3/5V1/5V2/7V0 - AD9102: saw/SRAM режимы и загрузка custom waveform
- AD9833, DS1809 и STM32 DAC через отдельные firmware-команды
- сохранение профиля на SD-карту устройства
- сброс платы командой
DEFAULT_ENABLE
Не поддерживается и удалено из PC-кода:
- legacy-команды
0x3333и0x5555 - старый flow про
saved dataиremove file - task/sweep-режим как публичный сценарий
Установка
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Запуск GUI
source .venv/bin/activate
./run
или
python3 -m laser_control.gui.main
Автоподключение использует первый доступный USB UART-порт.
При подключении приложение только читает текущее состояние и телеметрию, без автоприменения ручных параметров.
Совместимый launcher _device_main.py сохранён, но он только проксирует запуск в новый PyQt entrypoint.
Публичный API
from laser_control import (
LaserController,
Measurements,
DeviceStatus,
DeviceState,
ValidationError,
CommunicationError,
)
Пример встраивания
from laser_control import LaserController
with LaserController(port="/dev/ttyUSB0") as controller:
controller.set_manual_mode(
temp1=25.0,
temp2=30.0,
current1=40.0,
current2=35.0,
)
print(controller.get_measurements())