Skip to content

Commit 686b91c

Browse files
author
neil.hamilton
committed
Merge add-ps6000a-examples branch into master
2 parents f156794 + e24f28f commit 686b91c

File tree

5 files changed

+1515
-0
lines changed

5 files changed

+1515
-0
lines changed

picosdk/PicoDeviceEnums.py

Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
#
2+
# Copyright (C) 2020 Pico Technology Ltd. See LICENSE file for terms.
3+
#
4+
"""
5+
This is a Python module defining the enumerations from the PicoDeviceEnums.h C header
6+
file for use with PicoScope 6000 A Series oscilloscopes using the ps6000a driver API
7+
functions.
8+
"""
9+
10+
from ctypes import *
11+
from picosdk.constants import make_enum
12+
from picosdk.library import Library
13+
14+
class PicoEnumlib(Library):
15+
def __init__(self):
16+
super(PicoEnumlib, self).__init__("ps6000a")
17+
18+
19+
picoEnum = PicoEnumlib()
20+
21+
def _define_ratio_mode():
22+
PICO_RATIO_MODE_AGGREGATE = 1
23+
PICO_RATIO_MODE_DECIMATE = 2
24+
PICO_RATIO_MODE_AVERAGE = 4
25+
PICO_RATIO_MODE_DISTRIBUTION = 8
26+
PICO_RATIO_MODE_SUM = 16
27+
PICO_RATIO_MODE_TRIGGER_DATA_FOR_TIME_CALCUATION = 0x10000000
28+
PICO_RATIO_MODE_SEGMENT_HEADER = 0x20000000
29+
PICO_RATIO_MODE_TRIGGER = 0x40000000
30+
PICO_RATIO_MODE_RAW = 0x80000000
31+
32+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
33+
34+
picoEnum.PICO_RATIO_MODE = _define_ratio_mode()
35+
36+
def _define_channel():
37+
PICO_CHANNEL_A = 0
38+
PICO_CHANNEL_B = 1
39+
PICO_CHANNEL_C = 2
40+
PICO_CHANNEL_D = 3
41+
PICO_CHANNEL_E = 4
42+
PICO_CHANNEL_F = 5
43+
PICO_CHANNEL_G = 6
44+
PICO_CHANNEL_H = 7
45+
PICO_PORT0 = 128
46+
PICO_PORT1 = 129
47+
PICO_PORT2 = 130
48+
PICO_PORT3 = 131
49+
PIOC_EXTERNAL = 1000
50+
PICI_TRIGGER_AUX = 1001
51+
PICO_PULSE_WIDTH_SOURCE = 0x10000000
52+
PICO_DIGITAL_SOURCE = 0x10000001
53+
54+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
55+
56+
picoEnum.PICO_CHANNEL = _define_channel()
57+
58+
def _define_channel_flags():
59+
PICO_CHANNEL_A_FLAGS = 1
60+
PICO_CHANNEL_B_FLAGS = 2
61+
PICO_CHANNELS_C_FLAGS = 4
62+
PICO_CHANNEL_D_FLAGS = 8
63+
PICO_CHANNEL_E_FLAGS = 16
64+
PICO_CHANNEL_F_FLAGS = 32
65+
PICO_CHANNELS_G_FLAGS = 64
66+
PICO_CHANNEL_H_FLAGS = 128
67+
PICO_PORT0_FLAGS = 65536
68+
PICO_PORT1_FLAGS = 131072
69+
PICO_PORT2_FLAGS = 262144
70+
PICO_PORT3_FLAGS = 524288
71+
72+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
73+
74+
picoEnum.PICO_CHANNEL_FLAGS = _define_channel_flags()
75+
76+
picoEnum.PICO_PORT_DIGITAL_CHANNEL = make_enum([
77+
"PICO_PORT_DIGITAL_CHANNEL0",
78+
"PICO_PORT_DIGITAL_CHANNEL1",
79+
"PICO_PORT_DIGITAL_CHANNEL2",
80+
"PICO_PORT_DIGITAL_CHANNEL3",
81+
"PICO_PORT_DIGITAL_CHANNEL4"
82+
"PICO_PORT_DIGITAL_CHANNEL5",
83+
"PICO_PORT_DIGITAL_CHANNEL6",
84+
"PICO_PORT_DIGITAL_CHANNEL7",
85+
])
86+
87+
picoEnum.PICO_DATA_TYPE = make_enum([
88+
"PICO_INT8_T",
89+
"PICO_INT16_T",
90+
"PICO_INT32_T",
91+
"PICO_UINT32_T",
92+
"PICO_INT64_T",
93+
])
94+
95+
def _define_coupling():
96+
PICO_AC = 0
97+
PICO_DC = 1
98+
PICO_DC_50OHM = 50
99+
100+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
101+
102+
picoEnum.PICO_COUPLING = _define_coupling()
103+
104+
# PicoBandwitdthLimiterFlags
105+
# needs implementing still
106+
107+
def _define_bandwidth_limiter():
108+
PICO_BW_FULL = 0
109+
PICO_BW_100KHZ = 100000
110+
PICO_BW_20KHZ = 20000
111+
PICO_BW_1MHZ = 1000000
112+
PICO_BW_20MHZ = 20000000
113+
PICO_BW_25MHZ = 25000000
114+
PICO_BW_50MHZ = 50000000
115+
PICO_BW_250MHZ = 250000000
116+
PICO_BW_500MHZ = 500000000
117+
118+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
119+
120+
picoEnum.PICO_BANDWIDTH_LIMITER = _define_bandwidth_limiter()
121+
122+
picoEnum.PICO_PULSE_WIDTH_TYPE = make_enum([
123+
"PICO_PW_TYPE_NONE",
124+
"PICO_PW_TYPE_LESS_THAN",
125+
"PICO_PW_TYPE_GREATER_THAN",
126+
"PICO_PW_IN_RANGE",
127+
"PICO_PW_TYPE_OUT_OF_RANGE"
128+
])
129+
130+
picoEnum.PICO_SWEEP_TYPE = make_enum([
131+
"PICO_UP",
132+
"PICO_DOWN",
133+
"PICO_UPDOWN",
134+
"PICO_DOWNUP"
135+
])
136+
137+
def _define_wave_type():
138+
PICO_SINE = 0x00000011
139+
PICO_SQUARE = 0x00000012
140+
PICO_TRIANGLE = 0x00000013
141+
PICO_RAMP_UP = 0x00000014
142+
PICO_RAMP_DOWN = 0x00000015
143+
PICO_SINC = 0x00000016
144+
PICO_GAUSSIAN = 0x00000017
145+
PICO_HALF_SINE = 0x00000018
146+
PICO_DC_VOLTAGE = 0x00000400
147+
PICO_PWM = 0x00001000
148+
PICO_WHITENOISE = 0x00002001
149+
PICO_PRBS = 0x00002002
150+
PICO_ARBITRARY = 0x10000000
151+
152+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
153+
154+
picoEnum.PICO_WAVE_TYPE = _define_wave_type()
155+
156+
picoEnum.PICO_SIGGEN_TRIG_TYPE = make_enum([
157+
"PICO_SIGGEN_RISING",
158+
"PICO_SIGGEN_FALLING",
159+
"PICO_SIGGEN_GATE_HIGH",
160+
"PICO_SIGGEN_GATE_LOW"
161+
])
162+
163+
picoEnum.PICO_SIGGEN_TRIG_SOURCE = make_enum([
164+
"PICO_SIGGEN_NONE",
165+
"PICO_SIGGEN_SCOPE_TRIG",
166+
"PICO_SGGEN_AUX_IN",
167+
"PICO_SIGGEN_EXT_IN",
168+
"PICO_SIGGEN_SOFT_TRIG",
169+
"PICO_SIGGEN_TRIGGER_RAW"
170+
])
171+
172+
picoEnum.PICO_SIGGEN_FILTER_STATE = make_enum([
173+
"PICO_SIGGEN_FILTER_AUTO",
174+
"PICO_SIGGEN_FILTER_OFF",
175+
"PICO_SIGGEN_FILTER_ON"
176+
])
177+
178+
picoEnum.PICO_SIGGEN_PARAMETER = make_enum([
179+
"PICO_SIGGEN_PARAM_OUTPUT_VOLTS",
180+
"PICO_SIGGEN_PARAM_SAMPLE",
181+
"PICO_SIGGEN_BUFFER_LENGTH"
182+
])
183+
184+
picoEnum.PICO_TIME_UNITS = make_enum([
185+
"PICO_FS",
186+
"PICO_PS",
187+
"PICO_NS",
188+
"PICO_US",
189+
"PICO_MS",
190+
"PICO_S"
191+
])
192+
193+
def _define_threshold_direction():
194+
PICO_ABOVE = PICO_INSIDE = 0
195+
PICO_BELOW = PICO_OUTSIDE = 1
196+
PICO_RISING = PICO_ENTER = PICO_NONE = 2
197+
PICO_FALLING = PICO_EXIT = 3
198+
PICO_RISING_OR_FALLING = PICO_ENTER_OR_EXIT = 4
199+
PICO_ABOVE_LOWER = 5
200+
PICO_BELOW_LOWER = 6
201+
PICO_RISING_LOWER = 7
202+
PICO_FALLING_LOWER = 8
203+
PICO_POSITIVE_RUNT = 9
204+
PICO_NEGATIVE_RUNT = 10
205+
PICO_LOGIC_LOWER = 1000
206+
PICO_LOGIC_UPPER = 1001
207+
208+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
209+
210+
picoEnum.PICO_THRESHOLD_DIRECTION = _define_threshold_direction()
211+
212+
picoEnum.PICO_THRESHOLD_MODE = make_enum([
213+
"PICO_LEVEL",
214+
"PICO_WINDOW"
215+
])
216+
217+
picoEnum.PICO_ETS_MODE = make_enum([
218+
"PICO_ETS_OFF",
219+
"PICO_WINDOW",
220+
])
221+
222+
picoEnum.PICO_INDEX_MODE = make_enum([
223+
"PICO_SINGLE",
224+
"PICO_DUAL",
225+
"PICO_QUAD"
226+
])
227+
228+
def _define_action():
229+
PICO_CLEAR_ALL = 0x00000001
230+
PICO_ADD = 0x00000002
231+
PICO_CLEAR_THIS_DATA_BUFFER = 0x00001000
232+
PICO_CLEAR_WAVEFORM_DATA_BUFFERS = 0x00002000
233+
PICO_CLEAR_WAVEFORM_READ_DATA_BUFFERS = 0x00004000
234+
235+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
236+
237+
picoEnum.PICO_ACTION = _define_action()
238+
239+
picoEnum.Pico_TRIGGER_STATE = make_enum([
240+
"PICO_CONDITION_DONT_CARE",
241+
"PICO_CONDITION_TRUE",
242+
"PICO_CONDITION_FALSE"
243+
])
244+
245+
def _define_resolution():
246+
PICO_DR_8BIT = 0
247+
PICO_DR_12BIT = 1
248+
PICO_DR_14BIT = 2
249+
PICO_DR_15BIT = 3
250+
PICO_DR_16BIT = 4
251+
PICO_DR_10BIT = 10
252+
253+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
254+
255+
picoEnum.PICO_DEVICE_RESOLUTION = _define_resolution()
256+
257+
picoEnum.PICO_READ_SELECTION = make_enum([
258+
"PICO_READSELECTION_NONE",
259+
"PICO_TRIGGER_READ",
260+
"PICO_DATA_READ1",
261+
"PICO_DATA_READ2",
262+
"PICO_DATA_READ3"
263+
])
264+
265+
picoEnum.PICO_TRIM_ACTION = make_enum([
266+
"PICO_OLDEST",
267+
"PICO_RECENT"
268+
])
269+
270+
picoEnum.PICO_DIGITAL_PORT_HYSTERESIS = make_enum([
271+
"PICO_VERY_HIGH_400MV",
272+
"PICO_HIGH_200MV",
273+
"PICO_NORMAL_100MV",
274+
"PICO_LOW_50MV"
275+
])
276+
277+
picoEnum.PICO_DIGITAL_DIRECTION = make_enum([
278+
"PICO_DIGITAL_DONT_CARE",
279+
"PICO_DIGITAL_DIRECTION_LOW",
280+
"PICO_DIGITAL_DIRECTION_HIGH",
281+
"PICO_DIGITAL_DIRECTION_RISING",
282+
"PICO_DIGITAL_DIRECTION_FALLING",
283+
"PICO_DIGITAL_DIRECTION_RISING_OR_FALLING",
284+
"PICO_DIGITAL_DIRECTION_MAX_DIRECTION"
285+
])
286+
287+
def _define_conditions_info():
288+
PICO_CLEAR_CONDITIONS = 0x00000001
289+
PICO_ADD_CONDITIONS = 0x00000002
290+
291+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
292+
293+
picoEnum.PICO_CONDITIONS_INFO = _define_conditions_info()
294+
295+
picoEnum.PICO_CLOCK_REFERENCE = make_enum([
296+
"PICO_INTERNAL_REF",
297+
"PICO_EXTERNAL_REF"
298+
])
299+
300+
picoEnum.PICO_TRIGGER_WITHIN_PRE_TRIGGER = make_enum([
301+
"PICO_DISABLE",
302+
"PICO_ARM"
303+
])
304+
305+
picoEnum.PICO_TEMPERATURE_REFERENCE = make_enum([
306+
"PICO_TEMPERATURE_UNINITIALISED",
307+
"PICO_TEMPERATURE_NORMAL",
308+
"PICO_TEMPERATURE_WARNING",
309+
"PICO_TEMPERATURE_CRITICAL",
310+
"PICO_TEMPERATURE_REFERENCE"
311+
])
312+
313+
def _define_digital_port():
314+
Pico_DIGITAL_PORT_NONE = 0
315+
PICO_DIGITAL_PORT_MSO_POD = 1000
316+
PICO_DIGITAL_PORT_UNKNOWN_DEVICE = -2
317+
318+
return {k.upper(): v for k, v in locals().items() if k.startswith("PICO")}
319+
320+
picoEnum.PICO_DIGITAL_PORT = _define_digital_port

0 commit comments

Comments
 (0)