48 lines
1.7 KiB
Python
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)) |