@@ -25,15 +25,6 @@ class Oscilloscope(ADCBufferMixin):
25
25
device : :class:`SerialHandler`, optional
26
26
Serial interface for communicating with the PSLab device. If not
27
27
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.
37
28
"""
38
29
39
30
_CH234 = ["CH2" , "CH3" , "MIC" ]
@@ -42,9 +33,9 @@ def __init__(self, device: SerialHandler = None):
42
33
self ._device = SerialHandler () if device is None else device
43
34
self ._channels = {a : AnalogInput (a ) for a in ANALOG_CHANNELS }
44
35
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"
48
39
self ._set_gain ("CH1" , 1 )
49
40
self ._set_gain ("CH2" , 1 )
50
41
@@ -53,7 +44,7 @@ def capture(
53
44
channels : int ,
54
45
samples : int ,
55
46
timegap : float ,
56
- trigger : Union [bool , float ] = None ,
47
+ trigger : Union [float , bool ] = None ,
57
48
trigger_channel : str = None ,
58
49
block : bool = True ,
59
50
) -> List [np .ndarray ]:
@@ -89,7 +80,7 @@ def capture(
89
80
limitations; i.e. to get 12-bit samples only one channel may be
90
81
sampled, there must be no active trigger, and the time gap must be
91
82
1 µs or greater.
92
- trigger : float, optional
83
+ trigger : float or bool , optional
93
84
Voltage at which to trigger sampling. Triggering is disabled by
94
85
default. Trigger settings persist between calls; disable by setting
95
86
trigger=False.
@@ -128,14 +119,16 @@ def capture(
128
119
self ._channel_one_map = channels
129
120
channels = 1
130
121
122
+ if trigger_channel is None :
123
+ self ._trigger_channel = self ._channel_one_map
124
+ else :
125
+ self ._trigger_channel = trigger_channel
126
+
131
127
if trigger is False :
132
- self .trigger_enabled = False
128
+ self ._trigger_enabled = False
133
129
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 )
139
132
140
133
self ._check_args (channels , samples , timegap )
141
134
timegap = int (timegap * 8 ) / 8
@@ -313,11 +306,11 @@ def configure_trigger(
313
306
If the trigger channel is set to a channel which cannot be sampled.
314
307
"""
315
308
if enable is False :
316
- self .trigger_enabled = False
309
+ self ._trigger_enabled = False
317
310
return
318
311
319
312
if channel is not None :
320
- self .trigger_channel = channel
313
+ self ._trigger_channel = channel
321
314
322
315
if self .trigger_channel == self ._channel_one_map :
323
316
channel = 0
@@ -333,7 +326,22 @@ def configure_trigger(
333
326
level = self ._channels [self .trigger_channel ].unscale (voltage )
334
327
self ._device .send_int (level )
335
328
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
337
345
338
346
def select_range (self , channel : str , voltage_range : Union [int , float ]):
339
347
"""Set appropriate gain automatically.
0 commit comments