Skip to content

Commit c886285

Browse files
committed
Oscilloscope: Turn trigger attributes into properties
1 parent c4dbe8d commit c886285

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

pslab/instrument/oscilloscope.py

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,6 @@ class Oscilloscope(ADCBufferMixin):
2525
device : :class:`SerialHandler`, optional
2626
Serial interface for communicating with the PSLab device. If not
2727
provided, a new one will be created.
28-
29-
Attributes
30-
----------
31-
trigger_voltage : float
32-
Trigger capture when voltage crosses this value.
33-
trigger_enabled : bool
34-
Whether or not to wait for trigger condition before capture start.
35-
trigger_channel : str
36-
Name of channel to trigger on.
3728
"""
3829

3930
_CH234 = ["CH2", "CH3", "MIC"]
@@ -42,9 +33,9 @@ def __init__(self, device: SerialHandler = None):
4233
self._device = SerialHandler() if device is None else device
4334
self._channels = {a: AnalogInput(a) for a in ANALOG_CHANNELS}
4435
self._channel_one_map = "CH1"
45-
self.trigger_voltage = 0
46-
self.trigger_enabled = False
47-
self.trigger_channel = "CH1"
36+
self._trigger_voltage = None
37+
self._trigger_enabled = False
38+
self._trigger_channel = "CH1"
4839
self._set_gain("CH1", 1)
4940
self._set_gain("CH2", 1)
5041

@@ -53,7 +44,7 @@ def capture(
5344
channels: int,
5445
samples: int,
5546
timegap: float,
56-
trigger: Union[bool, float] = None,
47+
trigger: Union[float, bool] = None,
5748
trigger_channel: str = None,
5849
block: bool = True,
5950
) -> List[np.ndarray]:
@@ -89,7 +80,7 @@ def capture(
8980
limitations; i.e. to get 12-bit samples only one channel may be
9081
sampled, there must be no active trigger, and the time gap must be
9182
1 µs or greater.
92-
trigger : float, optional
83+
trigger : float or bool, optional
9384
Voltage at which to trigger sampling. Triggering is disabled by
9485
default. Trigger settings persist between calls; disable by setting
9586
trigger=False.
@@ -128,14 +119,16 @@ def capture(
128119
self._channel_one_map = channels
129120
channels = 1
130121

122+
if trigger_channel is None:
123+
self._trigger_channel = self._channel_one_map
124+
else:
125+
self._trigger_channel = trigger_channel
126+
131127
if trigger is False:
132-
self.trigger_enabled = False
128+
self._trigger_enabled = False
133129
elif trigger is not None:
134-
if trigger_channel is None:
135-
self.trigger_channel = self._channel_one_map
136-
else:
137-
self.trigger_channel = trigger_channel
138-
self.configure_trigger(voltage=trigger)
130+
if trigger != self._trigger_voltage:
131+
self.configure_trigger(voltage=trigger)
139132

140133
self._check_args(channels, samples, timegap)
141134
timegap = int(timegap * 8) / 8
@@ -313,11 +306,11 @@ def configure_trigger(
313306
If the trigger channel is set to a channel which cannot be sampled.
314307
"""
315308
if enable is False:
316-
self.trigger_enabled = False
309+
self._trigger_enabled = False
317310
return
318311

319312
if channel is not None:
320-
self.trigger_channel = channel
313+
self._trigger_channel = channel
321314

322315
if self.trigger_channel == self._channel_one_map:
323316
channel = 0
@@ -333,7 +326,22 @@ def configure_trigger(
333326
level = self._channels[self.trigger_channel].unscale(voltage)
334327
self._device.send_int(level)
335328
self._device.get_ack()
336-
self.trigger_enabled = True
329+
self._trigger_enabled = True
330+
331+
@property
332+
def trigger_enabled(self) -> bool:
333+
"""bool: Wait for trigger condition before capture start."""
334+
return self._trigger_enabled
335+
336+
@property
337+
def trigger_channel(self) -> str:
338+
"""str: Name of channel to trigger on."""
339+
return self._trigger_channel
340+
341+
@property
342+
def trigger_voltage(self) -> float:
343+
"""float: Trigger when voltage crosses this value."""
344+
return self._trigger_voltage
337345

338346
def select_range(self, channel: str, voltage_range: Union[int, float]):
339347
"""Set appropriate gain automatically.

0 commit comments

Comments
 (0)