Files
x12sa-eiger/script/devices/StdDaq.py
gac-x12sa 12d61a6ceb Closedown
2023-01-05 17:09:14 +01:00

71 lines
2.5 KiB
Python

class StdDaq(DeviceBase):
def __init__(self, name, url, simulated=False):
DeviceBase.__init__(self, name)
self.url=url
self.req_id = None
if simulated:
self.setSimulated()
self.simulated_id=1
self.simulated_config = {"detector_name": "eg","detector_type": "eiger","n_modules": 2,"bit_depth": 32,"image_pixel_height": 514,"image_pixel_width": 1030,"start_udp_port": 50000}
def doInitialize(self):
pass
def start(self, n_images, output_file):
self.state.assertIs(State.Ready)
self.n_images=n_images
self.output_file=output_file
if not self.simulated:
data = {"sources":"eiger", "n_images":10, "output_file":"/tmp/test.h5"}
headers = {'Content-type': 'application/json'}
r = requests.post(url = self.url + "/write_async", json=data, headers=headers)
self.req_id = int(str(r.json()["request_id"]))
else:
self.req_id = self.simulated_id
self.simulated_id=self.simulated_id+1
print "Started request: ", self.req_id
self.setCache(self.req_id, None)
self.setState(State.Busy)
fork (self.monitor)
def abort(self):
self.state.assertIs(State.Busy)
print "Aborting request: ", self.req_id
if not self.simulated:
data = {"request_id":self.req_id}
headers = {'Content-type': 'application/json'}
r = requests.post(url = self.url + "/write_kill", json=data, headers=headers)
self.setCache(None, None)
self.setState(State.Ready)
def monitor(self):
done = False
start=time.time()
timeout = 5 if self.simulated else -1
while self.getState()==State.Busy:
if (timeout >=0) and ((time.time()-start)>=timeout):
done = True
if not self.simulated:
pass #TODO: Check Status
if done:
print "Finished request: ", self.req_id
self.setCache(None, None)
self.setState(State.Ready)
time.sleep(0.2)
def get_config(self):
if self.simulated:
return self.simulated_config
#TODO
def set_config(self, config):
if type(config) == dict or isinstance(config, java.util.Map) :
if self.simulated:
self.simulated_config=config
#TODO
def doClose(self):
pass