Skip to content

Commit 112c323

Browse files
committed
Now handling DDS devices
1 parent 7e4a15b commit 112c323

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

blacs/plugins/virtual_device/__init__.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def _get_child_outputs(self, conn_table, root_devs, dev_name, tab):
205205
elif isinstance(channel, AO_output_class):
206206
AOs.append((child, child_dev.parent_port))
207207
elif isinstance(channel, DDS_output_class):
208-
DDSS.append((child, child_dev.parent_port))
208+
DDSs.append((child, child_dev.parent_port))
209209

210210
return AOs, DOs, DDSs
211211

@@ -346,6 +346,7 @@ def on_virtual_devices_item_changed(self, item):
346346
[new_device_item, None, None, remove_item])
347347
new_device_item.appendRow(QStandardItem('Analog Outputs'))
348348
new_device_item.appendRow(QStandardItem('Digital Outputs'))
349+
new_device_item.appendRow(QStandardItem('DDS Outputs'))
349350

350351
item.setText(self.VD_TREE_DUMMY_ROW_TEXT)
351352

@@ -385,6 +386,12 @@ def on_edit_virtual_devices(self, *args, **kwargs):
385386
chan = self.BLACS['ui'].blacs.tablist[DO[0]].get_channel(DO[1])
386387
digital_outputs.appendRow(self.make_virtual_device_output_row(DO[0] + '.' + chan.name))
387388

389+
dds_outputs = QStandardItem('DDS Outputs')
390+
device_item.appendRow(dds_outputs)
391+
for DDS in vd['DDS']:
392+
chan = self.BLACS['ui'].blacs.tablist[DDS[0]].get_channel(DDS[1])
393+
dds_outputs.appendRow(self.make_virtual_device_output_row(DDS[0] + '.' + chan.name))
394+
388395
add_vd_item = QStandardItem(self.VD_TREE_DUMMY_ROW_TEXT)
389396
add_vd_item.setData(True, self.VD_TREE_ROLE_IS_DUMMY_ROW)
390397
add_vd_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable)
@@ -460,6 +467,10 @@ def _encode_virtual_devices(self):
460467
DO_name = output_group.child(k).text().split(' - ')[0].split('.')
461468
inverted = output_group.child(k).data(self.VD_TREE_ROLE_DO_INVERTED)
462469
virtual_device_data[vd.text()]['DO'].append((DO_name[0], DO_name[1], inverted))
470+
elif output_group.text() == 'DDS Outputs':
471+
for k in range(output_group.rowCount()):
472+
DDS_name = output_group.child(k).text().split(' - ')[0].split('.')
473+
virtual_device_data[vd.text()]['DDS'].append((DDS_name[0], DDS_name[1]))
463474

464475
return virtual_device_data
465476

blacs/plugins/virtual_device/virtual_device_tab.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from qtutils.qt.QtWidgets import *
44

55
from labscript_utils.qtwidgets.toolpalette import ToolPaletteGroup
6+
from labscript_utils.qtwidgets.ddsoutput import DDSOutput
67

78
from blacs.tab_base_classes import PluginTab
89

@@ -22,22 +23,32 @@ def create_widgets(self, blacs_tablist, AOs, DOs, DDSs):
2223
if self._AOs[AO] is None:
2324
chan = self._blacs_tablist[AO[0]].get_channel(AO[1])
2425
orig_label = chan.name.split('-')
25-
self._AOs[AO] = chan.create_widget('%s\n%s'%(AO[0]+'.'+orig_label[0], orig_label[1]), False, None)
26+
virtual_label = '%s\n%s' % (AO[0]+'.'+orig_label[0], orig_label[1])
27+
self._AOs[AO] = chan.create_widget(virtual_label, False, None)
2628
self._AOs[AO].last_AO = None
2729

2830
for DO in self._DOs.keys():
2931
if self._DOs[DO] is None:
3032
self._DOs[DO] = self._blacs_tablist[DO[0]].get_channel(DO[1]).create_widget(inverted=DO[2])
3133
orig_label = self._DOs[DO].text().split('\n')
32-
self._DOs[DO].setText('%s\n%s'%(DO[0]+'.'+orig_label[0], orig_label[1]))
34+
virtual_label = '%s\n%s' % (DO[0]+'.'+orig_label[0], orig_label[1])
35+
self._DOs[DO].setText(virtual_label)
3336
self._DOs[DO].last_DO = None
3437

35-
dds_widgets = [] # TODO
38+
for DDS in self._DDSs.keys():
39+
if self._DDSs[DDS] is None:
40+
chan = self._blacs_tablist[DDS[0]].get_channel(DDS[1])
41+
orig_label = chan.name.split(' - ')
42+
self._DDSs[DDS] = DDSOutput(DDS[0]+'.'+orig_label[0], orig_label[1])
43+
chan.add_widget(self._DDSs[DDS])
44+
self._DDSs[DDS].last_DDS = None
3645

3746
if len(self._AOs) > 0:
3847
self.place_widget_group('Analog Outputs', [v for k, v in self._AOs.items()])
3948
if len(self._DOs) > 0:
4049
self.place_widget_group('Digital Outputs', [v for k, v in self._DOs.items()])
50+
if len(self._DDSs) > 0:
51+
self.place_widget_group('DDS Outputs', [v for k, v in self._DDSs.items()])
4152

4253
return
4354

@@ -56,6 +67,11 @@ def connect_widgets(self):
5667
new_DO = self._blacs_tablist[DO[0]].get_channel(DO[1])
5768
if self._DOs[DO].get_DO() is None and self._DOs[DO].last_DO != new_DO:
5869
self._DOs[DO].set_DO(new_DO)
70+
for DDS in self._DDSs.keys():
71+
if self._DDSs[DDS] is not None:
72+
new_DDS = self._blacs_tablist[DDS[0]].get_channel(DDS[1])
73+
if self._DDSs[DDS].last_DDS != new_DDS:
74+
new_DDS.add_widget(self._DDSs[DDS])
5975

6076
def disconnect_widgets(self, closing_device_name):
6177
'''
@@ -70,6 +86,11 @@ def disconnect_widgets(self, closing_device_name):
7086
if DO[0] == closing_device_name:
7187
self._DOs[DO].last_DO = self._DOs[DO].get_DO()
7288
self._DOs[DO].set_DO(None)
89+
for DDDS in self._DDSs.keys():
90+
if DDS[0] == closing_device_name:
91+
old_DDS = self._blacs_tablist[DDS[0]].get_channel(DDS[1])
92+
self._DDSs[DDS].last_DDS = old_DDS
93+
old_DDS.remove_widget(self._DDSs[DDS])
7394

7495
def place_widget_group(self, name, widgets):
7596
widget = QWidget()

0 commit comments

Comments
 (0)