mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-05 05:45:10 +00:00
67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
import json
|
|
|
|
from unilabos_msgs.msg import Resource
|
|
|
|
from unilabos.ros.msgs.message_converter import convert_from_ros_msg
|
|
|
|
|
|
class RegularContainer(object):
|
|
# 第一个参数必须是id传入
|
|
# noinspection PyShadowingBuiltins
|
|
def __init__(self, id: str):
|
|
self.id = id
|
|
self.ulr_resource = Resource()
|
|
self._data = None
|
|
|
|
@property
|
|
def ulr_resource_data(self):
|
|
if self._data is None:
|
|
self._data = json.loads(self.ulr_resource.data) if self.ulr_resource.data else {}
|
|
return self._data
|
|
|
|
@ulr_resource_data.setter
|
|
def ulr_resource_data(self, value: dict):
|
|
self._data = value
|
|
self.ulr_resource.data = json.dumps(self._data)
|
|
|
|
@property
|
|
def liquid_type(self):
|
|
return self.ulr_resource_data.get("liquid_type", None)
|
|
|
|
@liquid_type.setter
|
|
def liquid_type(self, value: str):
|
|
if value is not None:
|
|
self.ulr_resource_data["liquid_type"] = value
|
|
else:
|
|
self.ulr_resource_data.pop("liquid_type", None)
|
|
|
|
@property
|
|
def liquid_volume(self):
|
|
return self.ulr_resource_data.get("liquid_volume", None)
|
|
|
|
@liquid_volume.setter
|
|
def liquid_volume(self, value: float):
|
|
if value is not None:
|
|
self.ulr_resource_data["liquid_volume"] = value
|
|
else:
|
|
self.ulr_resource_data.pop("liquid_volume", None)
|
|
|
|
def get_ulr_resource(self) -> Resource:
|
|
"""
|
|
获取UlrResource对象
|
|
:return: UlrResource对象
|
|
"""
|
|
self.ulr_resource_data = self.ulr_resource_data # 确保数据被更新
|
|
return self.ulr_resource
|
|
|
|
def get_ulr_resource_as_dict(self) -> Resource:
|
|
"""
|
|
获取UlrResource对象
|
|
:return: UlrResource对象
|
|
"""
|
|
to_dict = convert_from_ros_msg(self.get_ulr_resource())
|
|
to_dict["type"] = "container"
|
|
return to_dict
|
|
|
|
def __str__(self):
|
|
return f"{self.id}" |