forked from M-Labs/artiq
waveform: add BitWaveform
This commit is contained in:
parent
adffcf26e0
commit
c0ee52ffa2
|
@ -239,3 +239,50 @@ class LogWaveform(Waveform):
|
||||||
|
|
||||||
def format_cursor_label(self):
|
def format_cursor_label(self):
|
||||||
self.cursor_label.setText("")
|
self.cursor_label.setText("")
|
||||||
|
|
||||||
|
|
||||||
|
class BitWaveform(Waveform):
|
||||||
|
def __init__(self, channel, state, parent=None):
|
||||||
|
Waveform.__init__(self, channel, state, parent)
|
||||||
|
self._arrows = []
|
||||||
|
|
||||||
|
def extract_data_from_state(self):
|
||||||
|
try:
|
||||||
|
self.x_data, self.y_data = zip(*self.state['data'][self.name])
|
||||||
|
except:
|
||||||
|
logger.debug('Error caught when loading waveform data: {}'.format(self.name), exc_info=True)
|
||||||
|
|
||||||
|
def display(self):
|
||||||
|
try:
|
||||||
|
display_y = []
|
||||||
|
display_x = []
|
||||||
|
previous_y = None
|
||||||
|
for x, y in zip(self.x_data, self.y_data):
|
||||||
|
state_unchanged = previous_y == y
|
||||||
|
if y is None:
|
||||||
|
dis_y = DISPLAY_MID
|
||||||
|
elif y == 1:
|
||||||
|
dis_y = DISPLAY_HIGH
|
||||||
|
else:
|
||||||
|
dis_y = DISPLAY_LOW
|
||||||
|
if state_unchanged:
|
||||||
|
arw = pg.ArrowItem(pxMode=True, angle=90)
|
||||||
|
self.addItem(arw)
|
||||||
|
self._arrows.append(arw)
|
||||||
|
arw.setPos(x, dis_y)
|
||||||
|
display_y.append(dis_y)
|
||||||
|
display_x.append(x)
|
||||||
|
previous_y = y
|
||||||
|
self.plot_data_item.setData(x=display_x, y=display_y)
|
||||||
|
except:
|
||||||
|
logger.debug('Error caught when displaying waveform: {}'.format(self.name), exc_info=True)
|
||||||
|
for arw in self._arrows:
|
||||||
|
self.removeItem(arw)
|
||||||
|
self.plot_data_item.setData(x=[], y=[])
|
||||||
|
|
||||||
|
def format_cursor_label(self):
|
||||||
|
if self.cursor_y is None:
|
||||||
|
lbl = "x"
|
||||||
|
else:
|
||||||
|
lbl = str(self.cursor_y)
|
||||||
|
self.cursor_label.setText(lbl)
|
||||||
|
|
Loading…
Reference in New Issue