Skip to content

Commit e174a5c

Browse files
authored
Merge pull request #7838 from bennthomsen/feature/tektronix-dpo
Add Tektronix DPO7200xx enhancements
2 parents 6a46b04 + e1caa50 commit e174a5c

File tree

4 files changed

+434
-16
lines changed

4 files changed

+434
-16
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add hold parameter, force_jump parameter, and set_event_jump method to the Tektronix AWG70000A driver for improved sequence control.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add TektronixDPOAcquisition, TektronixDPOCursor, and TektronixDPOMeasurementImmediate modules to the Tektronix DPO7200xx driver. Enhanced TektronixDPOTrigger with ready, state, and level parameters. Added coupling parameter to TektronixDPOChannel.

src/qcodes/instrument_drivers/tektronix/AWG70000A.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import xml.etree.ElementTree as ET
99
import zipfile as zf
1010
from functools import partial
11-
from typing import TYPE_CHECKING, Any
11+
from typing import TYPE_CHECKING, Any, Literal, Self
1212

1313
import numpy as np
1414
import numpy.typing as npt
@@ -191,15 +191,26 @@ def __init__(
191191
if channel not in list(range(1, num_channels + 1)):
192192
raise ValueError("Illegal channel value.")
193193

194-
self.state: Parameter = self.add_parameter(
194+
self.state: Parameter[int, Self] = self.add_parameter(
195195
"state",
196196
label=f"Channel {channel} state",
197197
get_cmd=f"OUTPut{channel}:STATe?",
198198
set_cmd=f"OUTPut{channel}:STATe {{}}",
199199
vals=vals.Ints(0, 1),
200200
get_parser=int,
201201
)
202-
"""Parameter state"""
202+
"""Channel State: (OFF: 0, ON: 1)"""
203+
204+
self.hold: Parameter[Literal["FIRST", "ZERO"], Self] = self.add_parameter(
205+
"hold",
206+
label=f"Channel {channel} hold value",
207+
get_cmd=f"OUTPut{channel}:WVALUE:ANALOG:STATE?",
208+
set_cmd=f"OUTPut{channel}:WVALUE:ANALOG:STATE {{}}",
209+
vals=vals.Enum("FIRST", "ZERO"),
210+
)
211+
""" the output condition of a waveform of the specified
212+
channel to hold while the instrument is in the waiting-for-trigger state.
213+
ZERO = 0V, FIRST = first value of next sequence"""
203214

204215
##################################################
205216
# FGEN PARAMETERS
@@ -587,6 +598,14 @@ def __init__(
587598
)
588599
"""Parameter all_output_off"""
589600

601+
self.force_jump: Parameter[int, Self] = self.add_parameter(
602+
"force_jump",
603+
label="Force Jump",
604+
set_cmd="SOURCE1:JUMP:FORCE {}",
605+
vals=vals.Ints(1, 16383),
606+
)
607+
"""Parameter force_jump"""
608+
590609
add_channel_list = self.num_channels > 2
591610
# We deem 2 channels too few for a channel list
592611
if add_channel_list:
@@ -619,6 +638,23 @@ def __init__(
619638

620639
self.connect_message()
621640

641+
def set_event_jump(
642+
self, sequence_name: str, current_step: int, next_step: int
643+
) -> None:
644+
"""
645+
Set event jump for a given step in the sequence
646+
647+
Args:
648+
sequence_name: The name of the sequence
649+
current_step: The step number in the sequence (1-indexed)
650+
next_step: The step number to jump to (1-indexed)
651+
652+
"""
653+
654+
self.write(
655+
f"SLISt:SEQuence:STEP{current_step}:EJUMp {sequence_name}, {next_step}"
656+
)
657+
622658
def force_triggerA(self) -> None:
623659
"""
624660
Force a trigger A event

0 commit comments

Comments
 (0)