57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
|
|
import time
|
|||
|
|
import threading
|
|||
|
|
from vision.visual_callback import VisualCallback, angle_visual_callback
|
|||
|
|
|
|||
|
|
# 创建VisualCallback实例
|
|||
|
|
visual_callback = VisualCallback()
|
|||
|
|
|
|||
|
|
# 模拟safe_control_lower_close执行
|
|||
|
|
def simulate_safe_close():
|
|||
|
|
|
|||
|
|
|
|||
|
|
while True:
|
|||
|
|
time.sleep(1)
|
|||
|
|
"""模拟safe_control_lower_close执行"""
|
|||
|
|
print("\n=== 开始模拟safe_control_lower_close执行 ===")
|
|||
|
|
|
|||
|
|
# 1. 首先,发送一些视觉回调数据,观察正常情况下的行为
|
|||
|
|
print("\n1. 正常运行阶段:")
|
|||
|
|
|
|||
|
|
for i in range(5):
|
|||
|
|
angle_visual_callback(50.0, "无堆料")
|
|||
|
|
time.sleep(1)
|
|||
|
|
|
|||
|
|
# 2. 模拟safe_control_lower_close开始执行
|
|||
|
|
print("\n2. 模拟safe_control_lower_close开始执行:")
|
|||
|
|
visual_callback._is_safe_closing = True
|
|||
|
|
|
|||
|
|
# 3. 再次发送视觉回调数据,观察是否会跳过relay操作
|
|||
|
|
print("\n3. safe_control_lower_close执行中:")
|
|||
|
|
for i in range(5):
|
|||
|
|
angle_visual_callback(50.0, "无堆料")
|
|||
|
|
time.sleep(1)
|
|||
|
|
|
|||
|
|
# 4. 模拟safe_control_lower_close执行完毕
|
|||
|
|
print("\n4. 模拟safe_control_lower_close执行完毕:")
|
|||
|
|
visual_callback._is_safe_closing = False
|
|||
|
|
|
|||
|
|
# 5. 再次发送视觉回调数据,观察是否恢复正常
|
|||
|
|
print("\n5. 恢复正常运行:")
|
|||
|
|
for i in range(5):
|
|||
|
|
angle_visual_callback(50.0, "无堆料")
|
|||
|
|
time.sleep(1)
|
|||
|
|
|
|||
|
|
print("\n=== 测试结束 ===")
|
|||
|
|
visual_callback.shutdown()
|
|||
|
|
|
|||
|
|
# 启动测试
|
|||
|
|
try:
|
|||
|
|
simulate_safe_close()
|
|||
|
|
except KeyboardInterrupt:
|
|||
|
|
print("\n\n接收到Ctrl+C,正在停止服务...")
|
|||
|
|
finally:
|
|||
|
|
# 确保服务正确停止
|
|||
|
|
visual_callback.shutdown()
|
|||
|
|
visual_callback.relay_controller.close_all()
|
|||
|
|
print("服务已安全停止")
|