From 58549065fb8af08940a0b947c8622b46d7eb28db Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Fri, 25 Apr 2025 15:38:16 +0200 Subject: [PATCH] more demo test cases - added them to cfg/dummy_cfg.py + treat enum correctly in SecopClient.setParameterFromString Change-Id: Ia5b2d8d3a21c3215cb93d90975086eb9995b1543 --- cfg/dummy_cfg.py | 12 ++++++++++++ frappy/client/__init__.py | 2 +- frappy_demo/cryo.py | 2 +- frappy_demo/modules.py | 10 +++++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/cfg/dummy_cfg.py b/cfg/dummy_cfg.py index bc8e86b..661c344 100644 --- a/cfg/dummy_cfg.py +++ b/cfg/dummy_cfg.py @@ -96,3 +96,15 @@ Mod('cryo', pollinterval = Param(export=False), value = Param(unit = 'K', test = 'customized value'), ) + +Mod('heatswitch', + 'frappy_demo.modules.Switch', + 'Heatswitch for `mf` device', + switch_on_time = 5, + switch_off_time = 10, +) + +Mod('bool', + 'frappy_demo.modules.BoolWritable', + 'boolean writable test', +) diff --git a/frappy/client/__init__.py b/frappy/client/__init__.py index 2f9d418..dc2bbe5 100644 --- a/frappy/client/__init__.py +++ b/frappy/client/__init__.py @@ -734,7 +734,7 @@ class SecopClient(ProxyClient): """ self.connect() # make sure we are connected datatype = self.modules[module]['parameters'][parameter]['datatype'] - value = datatype.from_string(formatted) + value = datatype.export_value(datatype.from_string(formatted)) self.request(WRITEREQUEST, self.identifier[module, parameter], value) return self.cache[module, parameter] diff --git a/frappy_demo/cryo.py b/frappy_demo/cryo.py index 98ce5d5..f97a4c5 100644 --- a/frappy_demo/cryo.py +++ b/frappy_demo/cryo.py @@ -161,7 +161,7 @@ class Cryostat(CryoBase): by setting the current setpoint as new target""" # XXX: discussion: take setpoint or current value ??? - self.write_target(self.setpoint) + self.write_target(self.setpoint if self.mode == 'ramp' else self.value) # # calculation helpers diff --git a/frappy_demo/modules.py b/frappy_demo/modules.py index 6600f75..b54d20a 100644 --- a/frappy_demo/modules.py +++ b/frappy_demo/modules.py @@ -28,7 +28,7 @@ import time from frappy.datatypes import ArrayOf, BoolType, EnumType, \ FloatRange, IntRange, StringType, StructOf, TupleOf from frappy.lib.enum import Enum -from frappy.modules import Drivable, Readable, Attached +from frappy.modules import Drivable, Readable, Writable, Attached from frappy.modules import Parameter as SECoP_Parameter from frappy.properties import Property @@ -99,6 +99,14 @@ class Switch(Drivable): self.log.info(info) +class BoolWritable(Writable): + value = Parameter('boolean', BoolType()) + target = Parameter('boolean', BoolType()) + + def write_target(self, value): + self.value = value + + class MagneticField(Drivable): """a liquid magnet """