mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-04 05:15:10 +00:00
feat: enhance separation_step logic with polling thread management and error handling
This commit is contained in:
@@ -655,6 +655,12 @@ class ChinweDevice(UniversalDriver):
|
|||||||
|
|
||||||
motor = self.motors[motor_id]
|
motor = self.motors[motor_id]
|
||||||
|
|
||||||
|
# 停止轮询线程,避免与 separation_step 同时读取传感器造成串口冲突
|
||||||
|
self.logger.info("Stopping polling thread for separation_step...")
|
||||||
|
self._stop_event.set()
|
||||||
|
if self._poll_thread and self._poll_thread.is_alive():
|
||||||
|
self._poll_thread.join(timeout=2.0)
|
||||||
|
|
||||||
# 使能电机
|
# 使能电机
|
||||||
self.logger.info(f"Enabling motor {motor_id}...")
|
self.logger.info(f"Enabling motor {motor_id}...")
|
||||||
motor.enable(True)
|
motor.enable(True)
|
||||||
@@ -669,6 +675,7 @@ class ChinweDevice(UniversalDriver):
|
|||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
error_count = 0
|
error_count = 0
|
||||||
|
|
||||||
|
try:
|
||||||
while True:
|
while True:
|
||||||
# 检查超时
|
# 检查超时
|
||||||
if time.time() - start_time > timeout:
|
if time.time() - start_time > timeout:
|
||||||
@@ -695,8 +702,8 @@ class ChinweDevice(UniversalDriver):
|
|||||||
current_level = data['level']
|
current_level = data['level']
|
||||||
rssi = data['rssi']
|
rssi = data['rssi']
|
||||||
|
|
||||||
# 检测状态变化
|
# 检测状态变化 (包括首次检测)
|
||||||
if current_level != last_level and last_level is not None:
|
if current_level != last_level:
|
||||||
cycle_count += 1
|
cycle_count += 1
|
||||||
|
|
||||||
if current_level:
|
if current_level:
|
||||||
@@ -724,6 +731,10 @@ class ChinweDevice(UniversalDriver):
|
|||||||
|
|
||||||
# 轮询间隔
|
# 轮询间隔
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
finally:
|
||||||
|
# 恢复轮询线程
|
||||||
|
self.logger.info("Restarting polling thread...")
|
||||||
|
self._start_polling()
|
||||||
|
|
||||||
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 指令调用"""
|
||||||
|
|||||||
Reference in New Issue
Block a user