Files
dev/script/cpy/TestBlueskyPause.py
2023-05-01 11:28:04 +02:00

48 lines
1.7 KiB
Python

from functools import partial
import threading
import traceback
import socket
CTRL_CMD_PORT = 9587
msg=None
if ("ctrl_cmd_socket" in globals()) and (ctrl_cmd_socket is not None):
ctrl_cmd_socket.close()
ctrl_cmd_task_thread.join(5.0)
if ctrl_cmd_task_thread.is_alive():
raise Exception("Cannot stop ctrl_cmd_task_thread")
def on_ctrl_cmd(cmd):
global RE
print ("Control command: ", cmd)
if cmd=="abort":
if "RE" in globals():
if RE.state not in ['idle','paused', 'pausing']:
print ("Run Engine pause request")
RE.request_pause()
def ctlm_cmd_task(port,parent_thread, rc):
try:
global ctrl_cmd_socket
print ("Starting control command task")
quit=False
with socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) as ctrl_cmd_socket:
ctrl_cmd_socket.bind(("127.0.0.1", port))
ctrl_cmd_socket.settimeout(2.0)
while(quit==False) and (run_count==rc) and parent_thread.is_alive() and not ctrl_cmd_socket._closed:
try:
msg,add = ctrl_cmd_socket.recvfrom(100)
except socket.timeout:
continue
cmd =msg.decode('UTF-8')
on_ctrl_cmd(cmd)
if cmd=="exit":
quit=True
ctrl_cmd_socket.sendto("ack".encode('UTF-8'), add)
finally:
print("Quitting control command task")
ctrl_cmd_task_thread = threading.Thread(target=partial(ctlm_cmd_task, CTRL_CMD_PORT, threading.currentThread(), run_count))
ctrl_cmd_task_thread.setDaemon(True)
ctrl_cmd_task_thread.start()
#RE(rel_scan(dets, motor, -1, 1, 10))