From abf1005241488453ce96b782388dde6b072a3339 Mon Sep 17 00:00:00 2001 From: zhangshixiang <@zhangshixiang> Date: Wed, 24 Dec 2025 19:03:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=91=E7=AB=AF=E5=8F=AF=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=A4=B9=E7=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unilabos/devices/liquid_handling/prcxi/prcxi.py | 6 +++--- unilabos/ros/nodes/base_device_node.py | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/unilabos/devices/liquid_handling/prcxi/prcxi.py b/unilabos/devices/liquid_handling/prcxi/prcxi.py index bbb3918..8d47f04 100644 --- a/unilabos/devices/liquid_handling/prcxi/prcxi.py +++ b/unilabos/devices/liquid_handling/prcxi/prcxi.py @@ -443,7 +443,7 @@ class PRCXI9300Handler(LiquidHandlerAbstract): async def move_plate( self, plate: Plate, - to: Union[ResourceStack, ResourceHolder, Resource, Coordinate], + to: Resource, intermediate_locations: Optional[List[Coordinate]] = None, pickup_offset: Coordinate = Coordinate.zero(), destination_offset: Coordinate = Coordinate.zero(), @@ -544,7 +544,7 @@ class PRCXI9300Backend(LiquidHandlerBackend): is_whole_plate = True - balance_height = drop.pickup_distance_from_top + balance_height = 0 if plate_number is None: raise ValueError("target_plate_number is required when dropping a resource") step = self.api_client.clamp_jaw_drop(plate_number, is_whole_plate, balance_height) @@ -612,7 +612,7 @@ class PRCXI9300Backend(LiquidHandlerBackend): # 清除错误代码 self.api_client.clear_error_code() print("PRCXI9300 error code cleared.") - + self.api_client.call("IAutomation", "Stop") # 执行重置 print("Starting PRCXI9300 reset...") self.api_client.call("IAutomation", "Reset") diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index 8e7faef..7c53163 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -1276,7 +1276,11 @@ class BaseROS2DeviceNode(Node, Generic[T]): seen = set() unique_resources = [] for rs in akv: # todo: 这里目前只支持plr的类型 - res = self.resource_tracker.parent_resource(rs) # 获取 resource 对象 + if isinstance(rs, list): + for r in rs: + res = self.resource_tracker.parent_resource(r) # 获取 resource 对象 + else: + res = self.resource_tracker.parent_resource(r) if id(res) not in seen: seen.add(id(res)) unique_resources.append(res)