Files
RadioPhotonic_PCB_PC_software/README.md
2026-04-26 18:39:55 +03:00

100 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RadioPhotonic PCB PC Software
PyQt6-приложение для управления лазерной платой по UART.
Вся рабочая логика сосредоточена в пакете `laser_control`; старый FreeSimpleGUI и legacy-модули удалены.
## Структура
```text
.
├── _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-режим как публичный сценарий
## Установка
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
## Запуск GUI
```bash
source .venv/bin/activate
./run
```
или
```bash
python3 -m laser_control.gui.main
```
Автоподключение использует первый доступный USB UART-порт.
При подключении приложение только читает текущее состояние и телеметрию, без автоприменения ручных параметров.
Совместимый launcher `_device_main.py` сохранён, но он только проксирует запуск в новый PyQt entrypoint.
## Публичный API
```python
from laser_control import (
LaserController,
Measurements,
DeviceStatus,
DeviceState,
ValidationError,
CommunicationError,
)
```
## Пример встраивания
```python
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())
```