2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00
2026-04-26 18:39:55 +03:00

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())
Description
GUI программа для управления основной PCB генератора: задает токи, температуры лазеров, режимы варьирования. Написано на python3 + FreeSimpleGUI + PySerial
Readme 11 MiB
Languages
Python 99.6%
Shell 0.4%