0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

refactor: functionalities separated to different methods

This commit is contained in:
wyzula-jan
2023-09-07 15:43:44 +02:00
parent 7d996ec8e7
commit b7136e769f

View File

@ -16,11 +16,21 @@ from bec_lib.core import MessageEndpoints, RedisConnector, BECMessage
class StreamApp(QWidget): class StreamApp(QWidget):
update_plot = pyqtSignal() update_signal = pyqtSignal()
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.init_ui()
self.data = None
# self.scanID = None
self.stream_consumer = None
self.update_signal.connect(self.plot_new)
self.connect_stream_consumer("ScanID1", "mca")
def init_ui(self):
# Create layout and add widgets # Create layout and add widgets
self.layout = QVBoxLayout() self.layout = QVBoxLayout()
self.setLayout(self.layout) self.setLayout(self.layout)
@ -35,20 +45,18 @@ class StreamApp(QWidget):
# Add widgets to the layout # Add widgets to the layout
self.layout.addWidget(self.plot_widget) self.layout.addWidget(self.plot_widget)
def connect_stream_consumer(self, scanID, device):
if self.stream_consumer is not None:
self.stream_consumer.shutdown()
self.stream_consumer = connector.stream_consumer( self.stream_consumer = connector.stream_consumer(
topics=MessageEndpoints.device_async_readback(scanID="ScanID1", device="mca"), topics=MessageEndpoints.device_async_readback(scanID=scanID, device=device),
cb=self._streamer_cb, cb=self._streamer_cb,
parent=self, parent=self,
) )
self.stream_consumer.start() self.stream_consumer.start()
self.data = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
self.scanID = None
self.update_plot.connect(self.plot_new)
def plot_new(self): def plot_new(self):
self.image_item.setImage(self.data) self.image_item.setImage(self.data)
@ -59,21 +67,30 @@ class StreamApp(QWidget):
row = msgMCS.content["signals"]["mca1"] row = msgMCS.content["signals"]["mca1"]
metadata = msgMCS.metadata metadata = msgMCS.metadata
current_scanID = metadata.get("scanID", None) if parent.data is None:
if current_scanID is None:
return
if current_scanID != parent.scanID:
parent.scanID = current_scanID
parent.data = row parent.data = row
parent.image_item.clear() else:
parent.data = np.vstack((parent.data, row))
parent.data = np.vstack((parent.data, row)) # current_scanID = metadata.get("scanID", None)
# if current_scanID is None:
# return
parent.update_plot.emit() # if current_scanID != parent.scanID:
# parent.scanID = current_scanID
# parent.data = row
# parent.image_item.clear()
print(f"msg: {msg}")
print(f"metadata: {metadata}")
print(f"parent.data: {parent.data}")
parent.update_signal.emit()
if __name__ == "__main__": if __name__ == "__main__":
from bec_lib.core import RedisConnector
connector = RedisConnector("localhost:6379") connector = RedisConnector("localhost:6379")
app = QApplication([]) app = QApplication([])