change to a deque for monitor

This commit is contained in:
Stalberg Jonathan
2023-04-18 13:43:30 +02:00
parent a07fad5cb7
commit a9abbb227c
2 changed files with 23 additions and 21 deletions

View File

@ -31,7 +31,7 @@ class BECAdapter:
self.recon = recon self.recon = recon
if self.monitor: if self.monitor:
self.grum_client_monitor.new_plot( "monitor",{'xlabel':'time', 'ylabel':"sls_ring_current", "format": "time" }) self.grum_client_monitor.new_plot( "monitor",{'xlabel':'time', 'ylabel':"sls_ring_current", "frmt": "time" })
if self.motor_pos: if self.motor_pos:
self.grum_client_motor_pos.new_plot("Motor position", {'xlabel':'average_x_st_fzp', 'ylabel':"average_y_st_fzp" }) self.grum_client_motor_pos.new_plot("Motor position", {'xlabel':'average_x_st_fzp', 'ylabel':"average_y_st_fzp" })
@ -48,21 +48,23 @@ class BECAdapter:
def scan_status_update(self, segment): def scan_status_update(self, segment):
# whenever a new scan starts or ends, for now changes scan nr both in start and end # whenever a new scan starts or ends, for now changes scan nr both in start and end
segment = BECMessage.ScanStatusMessage.loads(segment.value) if segment.content["status"] == "open":
self.scan_nr = segment.content["info"]["scan_number"] segment = BECMessage.ScanStatusMessage.loads(segment.value)
self.positions = segment.content["info"]["positions"] print(segment.content)
xpos = [x for x,y in self.positions] self.scan_nr = segment.content["info"]["scan_number"]
ypos = [y for x,y in self.positions] self.positions = segment.content["info"]["positions"]
if len(segment.content["info"]["primary"]) == 2: xpos = [x for x,y in self.positions]
self.scan_running = True ypos = [y for x,y in self.positions]
# print("Plotting new positions") if len(segment.content["info"]["primary"]) == 2:
if self.motor_pos: self.scan_running = True
self.grum_client_motor_pos.new_plot( "Motor position", {"xs": xpos, "ys":ypos, 'xlabel':'average_x_st_fzp', 'ylabel':"average_y_st_fzp", "format": "Dots"}) # print("Plotting new positions")
else: if self.motor_pos:
self.scan_running = False self.grum_client_motor_pos.new_plot( "Motor position", {"xs": xpos, "ys":ypos, 'xlabel':'average_x_st_fzp', 'ylabel':"average_y_st_fzp", "frmt": "Dots"})
else:
self.scan_running = False
if len(segment.content["info"]["primary"]) == 1: if len(segment.content["info"]["primary"]) == 1:
print("umv") print("umv")
def start_scan_segment_sub(self): def start_scan_segment_sub(self):
self._scan_segment_sub = self.redis_connector.consumer( self._scan_segment_sub = self.redis_connector.consumer(

View File

@ -1,16 +1,16 @@
from pyqtgraph import DateAxisItem from pyqtgraph import DateAxisItem
from collections import deque
class PlotDescription: class PlotDescription:
def __init__(self, name, title=None, xlabel=None, ylabel=None, xs=None, ys=None, format=None): def __init__(self, name, title=None, xlabel=None, ylabel=None, xs=None, ys=None, frmt=None):
self.name = name self.name = name
self.title = title self.title = title
self.xlabel = xlabel self.xlabel = xlabel
self.ylabel = ylabel self.ylabel = ylabel
self.xs = [] if xs is None else list(xs) self.xs = deque(maxlen = 5000) if xs is None else deque(xs, maxlen = 5000)
self.ys = [] if ys is None else list(ys) self.ys = deque(maxlen = 5000) if ys is None else deque(ys, maxlen = 5000)
self.format = format self.format = frmt
@property @property
def data(self): def data(self):
@ -42,7 +42,7 @@ class PlotDescription:
# res = plotwidget.plot(self.xs, self.ys, name=self.name, **style) # res = plotwidget.plot(self.xs, self.ys, name=self.name, **style)
res = plotwidget.plot(self.xs, self.ys, name=self.name, **style) res = plotwidget.plot(self.xs, self.ys, name=self.name, **style)
if format == "time": if self.format == "time":
axis = DateAxisItem() axis = DateAxisItem()
plotwidget.setAxisItems({'bottom':axis}) plotwidget.setAxisItems({'bottom':axis})