@@ -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