From 9c300ca4518d44ce093e29faa40aac8de3fa63a1 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 13 Apr 2023 21:47:35 +0200 Subject: [PATCH] preview.py: Fix from DECTRIS to improve stability of preview --- python/preview.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/python/preview.py b/python/preview.py index 4c455a7c..e04a6496 100644 --- a/python/preview.py +++ b/python/preview.py @@ -4,6 +4,7 @@ import numpy import sys import signal import base64 +import time sys.path.insert(0, "/opt/dectris/albula/4.1/bin") sys.path.insert(0, "/opt/dectris/albula/4.1/python") @@ -11,7 +12,6 @@ sys.path.insert(0, "/opt/dectris/albula/4.1/python") import dectris.albula as albula from dectris.albula import DNoObject, DDrawingEllipse, DDrawingString, DDrawingLine - TERMINATE = False @@ -24,7 +24,7 @@ signal.signal(signal.SIGINT, signal_handler) context = zmq.Context() socket = context.socket(zmq.SUB) -socket.RCVTIMEO = 1000 # in milliseconds +socket.RCVTIMEO = 1000 # in milliseconds socket.connect("tcp://xbl-daq-38:5400") socket.setsockopt(zmq.SUBSCRIBE, b"") @@ -35,11 +35,15 @@ OPTIONAL_DATA.set_y_pixel_size(0.000075) albulaMain = albula.openMainFrame() albulaSubFrame = albulaMain.openSubFrame() +startTime = time.time() - -def read_message(): +while not TERMINATE: try: msg = socket.recv_json() + if round(time.time() - startTime) >= 60 * 60: + albulaSubFrame.close() + albulaSubFrame = albulaMain.openSubFrame() + startTime = time.time() OPTIONAL_DATA.set_wavelength(msg["wavelength_A"]) OPTIONAL_DATA.set_beam_center_x(msg["beam_x_pxl"]) OPTIONAL_DATA.set_beam_center_y(msg["beam_y_pxl"]) @@ -53,7 +57,7 @@ def read_message(): width = int(msg["width"]) image_number = int(msg["image_number"]) image_array = numpy.reshape(image_array, (height, width)) - print("Received image %d %d %d %d"%(image_number, height, width, len(image_array))) + print("Received image %d %d %d %d" % (image_number, height, width, len(image_array))) dimage = albula.DImage(image_array) if image_number >= 0: dimage.setOptionalData(OPTIONAL_DATA) @@ -63,6 +67,3 @@ def read_message(): OPTIONAL_DATA.set_pixel_mask(dimage) except: pass - -while not TERMINATE: - read_message()