/
zinskiy09
/
Align3.0
Обзор
Документация
Войти
/
zinskiy09
/
Align3.0
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
AlignTools.py
105 строк
3 KB
Sasha
add project files
17 сен 2025, 06:48
17 сен 2025, 06:48
323d13e
Код
Авторство
О чём код?
import json import time import threading import traceback from random import randint from typing import List, Any from AAPK.configuration.config import Config import numpy as np from AAPK.locale.translator import translate from AAPK.modules.base.base_device import BaseDevice from AAPK.utils.apptools import decode_it, is_num, encode_it, split_bracket_text, check_dir, AAPK_PATH, JsonManager, \ encode_dict, decode_dict, is_valid_filename from AAPK.utils.devicestools import CommandThread, recipe_command, get_single_property, wait_devices, get_json, \ check_state, set_json from AAPK.utils.validation import RError from tango import AttrWriteType, DevState, DebugIt, InfoIt, DevVarStringArray, DeviceProxy from tango.server import Device, attribute, device_property, command, run from dataclasses import dataclass @dataclass class AlignConfig: """Параметры задающиеся при инициализации класса""" EndPower: float AxisShift: float Trig: bool MeterNames: str Channels: List[Any] @dataclass class Axis: """Параметры задающиеся при инициализации класса""" name: str step: float speed: float dist: float def parse_params(obj, params, num_axes): for i in range(num_axes): ax = Axis( name=params.get('AxisName{}'.format(i + 1), None), step=params.get('Step{}'.format(i + 1), None), speed=params.get('Speed{}'.format(i + 1), None), dist=params.get('Dist{}'.format(i + 1), None) ) setattr(obj, 'axis_{}'.format(i + 1), ax) align_config = AlignConfig( EndPower=params.get('EndPower', None), AxisShift=params.get('AxisShift', None), Trig=params.get('Trig', None), MeterNames=params.get('MeterNames', None), Channels=params.get('Channels', None) ) setattr(obj, 'align_config', align_config) def get_params(device_name): device = DeviceProxy(device_name) properties = device.get_property('params')['params'] params = ''.join(properties) parsed_params = json.loads(params) # print(parsed_params) return parsed_params def put_params(device_name, params): device = DeviceProxy(device_name) properties = {'params': json.dumps(params, indent=4)} device.put_property(properties) def test_get_prop(): params = get_params('aapk/gridalign/1') params['Dist1'] = 300 params['Dist2'] = 2 put_params('aapk/gridalign/1', params) def get_all_axes(): axes = {} config = Config(None) a = config.get_platforms() for name, data in a.items(): for ax, server in data['axes'].items(): axes[ax] = DeviceProxy(server) return axes def get_all_slots(): slots = {} config = Config(None) a = config.get_measuring() for name, data in a.items(): for _, devices_data in data['devices'].items(): for slot, server in devices_data['slots'].items(): slots[slot] = DeviceProxy(server) print(slots) # TODO мэйн девайс добавить get_all_slots()