wip fix
This commit is contained in:
@@ -325,7 +325,19 @@ class Timepix(PSIDeviceBase, TimePixControl):
|
||||
# Prepare backend for TimePixFly
|
||||
self.backend.on_connected()
|
||||
# Register the callback for processing data received by the backend
|
||||
self.backend.add_callback(self.msg_buffer_callback)
|
||||
# self.backend.add_callback(self.msg_buffer_callback)
|
||||
self._msg_dump = {}
|
||||
|
||||
def _on_msg_received(start_frame, data_frame, end_frame):
|
||||
"""Callback"""
|
||||
ii = len(self._msg_dump)
|
||||
self._msg_dump[ii] = {
|
||||
"start_frame": start_frame,
|
||||
"data_frame": data_frame,
|
||||
"end_frame": end_frame,
|
||||
}
|
||||
|
||||
self.backend.add_callback(_on_msg_received)
|
||||
|
||||
def on_stage(self) -> DeviceStatus | StatusBase | None:
|
||||
"""
|
||||
@@ -339,6 +351,7 @@ class Timepix(PSIDeviceBase, TimePixControl):
|
||||
f"Exposure time {exp_time} must be greater than readout time {self._readout_time}."
|
||||
)
|
||||
num_images = self.scan_info.msg.scan_parameters.get("frames_per_trigger", 1)
|
||||
logger.info(f"Setting exposure time to {exp_time} and number of images to {num_images}")
|
||||
|
||||
self.cam.acquire_time.set(exp_time - self._readout_time).wait(timeout=self._pv_timeout)
|
||||
self.cam.acquire_period.set(exp_time).wait(timeout=self._pv_timeout)
|
||||
@@ -459,7 +472,7 @@ if __name__ == "__main__": # pragma: no cover
|
||||
timepix.wait_for_connection(all_signals=True, timeout=10)
|
||||
timepix.on_connected()
|
||||
print("Timepix connected and initialized.")
|
||||
for exp_time, frames_per_trigger in zip([0.8, 0.5, 0.1], [10, 15, 20]):
|
||||
for exp_time, frames_per_trigger in zip([10, 1], [1, 5]):
|
||||
time.sleep(0.5)
|
||||
print(
|
||||
f"Sleeping for 0.5 seconds before starting the scan with exp_time={exp_time} "
|
||||
@@ -491,20 +504,24 @@ if __name__ == "__main__": # pragma: no cover
|
||||
if time.time() - start_time > 30:
|
||||
print("Breaking loop manually after 30 seconds of waiting.")
|
||||
break
|
||||
print(f"Received number of messages: {len(timepix.backend.msg_buffer)}")
|
||||
if timepix.xes_data.get() is not None:
|
||||
# msgs.append(timepix.backend.msg_buffer)
|
||||
print(
|
||||
f"Events in energy rois {timepix.xes_data.get().signals[timepix.xes_data.name]['value'].sum()}"
|
||||
)
|
||||
events = timepix.xes_info.get().signals[
|
||||
f"{timepix.xes_info.name}_tds_total_events"
|
||||
]["value"]
|
||||
print(f"Total number of events: {events}")
|
||||
|
||||
# if timepix.xes_data.get() is not None:
|
||||
# # msgs.append(timepix.backend.msg_buffer)
|
||||
# print(
|
||||
# f"Events in energy rois {timepix.xes_data.get().signals[timepix.xes_data.name]['value'].sum()}"
|
||||
# )
|
||||
# events = timepix.xes_info.get().signals[
|
||||
# f"{timepix.xes_info.name}_tds_total_events"
|
||||
# ]["value"]
|
||||
# print(f"Total number of events: {events}")
|
||||
status = timepix.complete()
|
||||
print("Waiting for timepix to complete.")
|
||||
status.wait(timeout=10)
|
||||
print("Timepix scan completed.")
|
||||
n_messages = len(timepix._msg_dump)
|
||||
logger.warning(
|
||||
f"Received new messages: Length of Buffer is {n_messages}, last message {timepix._msg_dump.get(n_messages-1, 'N/A') if n_messages>0 else 'N/A'}"
|
||||
)
|
||||
|
||||
timepix.unstage()
|
||||
print("Timepix unstaged.")
|
||||
|
||||
@@ -426,6 +426,7 @@ class TimepixFlyBackend:
|
||||
|
||||
def run_msg_callbacks(self):
|
||||
"""Run callbacks if EndFrame message is received."""
|
||||
# TODO
|
||||
start_frame = self.msg_buffer[0]
|
||||
end_frame = self.msg_buffer[-1]
|
||||
data_frames = self.msg_buffer[1:-1]
|
||||
|
||||
@@ -202,6 +202,7 @@ class TimepixFlyClient:
|
||||
except ConnectionRefusedError:
|
||||
if time.time() - start_time > timeout:
|
||||
content = traceback.format_exc()
|
||||
logger.error(f"Connection timed out: {content}")
|
||||
raise TimeoutError(
|
||||
f"Timeout while waiting for connection to TimePixFly WebSocket server on {self.ws_url}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user