mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-20 06:21:19 +00:00
feat: introduce wait_time command and configurable device communication timeout.
This commit is contained in:
@@ -358,7 +358,8 @@ class ChinweDevice(UniversalDriver):
|
|||||||
|
|
||||||
def __init__(self, port: str = "192.168.1.200:8899", baudrate: int = 9600,
|
def __init__(self, port: str = "192.168.1.200:8899", baudrate: int = 9600,
|
||||||
pump_ids: List[int] = None, motor_ids: List[int] = None,
|
pump_ids: List[int] = None, motor_ids: List[int] = None,
|
||||||
sensor_id: int = 6, sensor_threshold: int = 300):
|
sensor_id: int = 6, sensor_threshold: int = 300,
|
||||||
|
timeout: float = 10.0):
|
||||||
"""
|
"""
|
||||||
初始化 ChinWe 工作站
|
初始化 ChinWe 工作站
|
||||||
:param port: 串口号 或 IP:Port
|
:param port: 串口号 或 IP:Port
|
||||||
@@ -366,10 +367,13 @@ class ChinweDevice(UniversalDriver):
|
|||||||
:param pump_ids: 注射泵 ID列表 (默认 [1, 2, 3])
|
:param pump_ids: 注射泵 ID列表 (默认 [1, 2, 3])
|
||||||
:param motor_ids: 步进电机 ID列表 (默认 [4, 5])
|
:param motor_ids: 步进电机 ID列表 (默认 [4, 5])
|
||||||
:param sensor_id: 液位传感器 ID (默认 6)
|
:param sensor_id: 液位传感器 ID (默认 6)
|
||||||
|
:param sensor_threshold: 传感器液位判定阈值
|
||||||
|
:param timeout: 通信超时时间 (默认 10秒)
|
||||||
"""
|
"""
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.port = port
|
self.port = port
|
||||||
self.baudrate = baudrate
|
self.baudrate = baudrate
|
||||||
|
self.timeout = timeout
|
||||||
self.mgr = None
|
self.mgr = None
|
||||||
self._is_connected = False
|
self._is_connected = False
|
||||||
|
|
||||||
@@ -406,8 +410,8 @@ class ChinweDevice(UniversalDriver):
|
|||||||
def connect(self) -> bool:
|
def connect(self) -> bool:
|
||||||
if self._is_connected: return True
|
if self._is_connected: return True
|
||||||
try:
|
try:
|
||||||
self.logger.info(f"Connecting to {self.port}...")
|
self.logger.info(f"Connecting to {self.port} (timeout={self.timeout})...")
|
||||||
self.mgr = TransportManager(self.port, baudrate=self.baudrate, logger=self.logger)
|
self.mgr = TransportManager(self.port, baudrate=self.baudrate, timeout=self.timeout, logger=self.logger)
|
||||||
|
|
||||||
# 初始化所有泵
|
# 初始化所有泵
|
||||||
for pid in self.pump_ids:
|
for pid in self.pump_ids:
|
||||||
@@ -610,6 +614,15 @@ class ChinweDevice(UniversalDriver):
|
|||||||
self.logger.warning("Wait sensor level timeout")
|
self.logger.warning("Wait sensor level timeout")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def wait_time(self, duration: int) -> bool:
|
||||||
|
"""
|
||||||
|
等待指定时间 (秒)
|
||||||
|
:param duration: 秒
|
||||||
|
"""
|
||||||
|
self.logger.info(f"Waiting for {duration} seconds...")
|
||||||
|
time.sleep(duration)
|
||||||
|
return True
|
||||||
|
|
||||||
def execute_command_from_outer(self, command_dict: Dict[str, Any]) -> bool:
|
def execute_command_from_outer(self, command_dict: Dict[str, Any]) -> bool:
|
||||||
"""支持标准 JSON 指令调用"""
|
"""支持标准 JSON 指令调用"""
|
||||||
return super().execute_command_from_outer(command_dict)
|
return super().execute_command_from_outer(command_dict)
|
||||||
|
|||||||
@@ -275,6 +275,23 @@ separator.chinwe:
|
|||||||
- target_state
|
- target_state
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
wait_time:
|
||||||
|
goal:
|
||||||
|
duration: 10
|
||||||
|
handles: {}
|
||||||
|
schema:
|
||||||
|
description: 等待指定时间
|
||||||
|
properties:
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
duration:
|
||||||
|
default: 10
|
||||||
|
description: 等待时间 (秒)
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- duration
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
module: unilabos.devices.separator.chinwe:ChinweDevice
|
module: unilabos.devices.separator.chinwe:ChinweDevice
|
||||||
status_types:
|
status_types:
|
||||||
is_connected: bool
|
is_connected: bool
|
||||||
@@ -320,4 +337,8 @@ separator.chinwe:
|
|||||||
default: 300
|
default: 300
|
||||||
description: 传感器液位判定阈值
|
description: 传感器液位判定阈值
|
||||||
type: integer
|
type: integer
|
||||||
|
timeout:
|
||||||
|
default: 10
|
||||||
|
description: 通信超时时间 (秒)
|
||||||
|
type: integer
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user