PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
from picoscope6000 import PicoScope6000
import matplotlib.pyplot as plt
import ctypes
from picosdk.ps6000a import ps6000a as ps
from picosdk.PicoDeviceEnums import picoEnum as enums # constants used in the library above
from picosdk.functions import assert_pico_ok,adc2mV,mV2adc # function that throws an exception if the scope function returns an error
# open the scope instance
scope = PicoScope6000()
scope.configure_channel("PICO_CHANNEL_A",coupling="PICO_DC_50OHM",voltage_range="PICO_5V")# configure vertical scale
scope.configure_timebase(1e-7,500)# configure horizontal scale
scope.configure_trigger("PICO_CHANNEL_A",threshold=1000,position=0.5,auto_trig=2000000)# configure triggering
#data = scope.rbm()# capture data
# let's try it step by step
## create memory segments
Nframes = 10
status = ps.ps6000aMemorySegments(scope.handle,
Nframes,
None)
assert_pico_ok(status)
buffer = [(ctypes.c_int16 * scope.record_length)()] * Nframes
for i in range(Nframes):
action = enums.PICO_ACTION["PICO_ADD"]|enums.PICO_ACTION["PICO_CLEAR_THIS_DATA_BUFFER"] if not i else enums.PICO_ACTION["PICO_ADD"]
status = ps.ps6000aSetDataBuffer(scope.handle,
enums.PICO_CHANNEL["PICO_CHANNEL_A"],
ctypes.byref(buffer[i]),
scope.record_length,
enums.PICO_DATA_TYPE["PICO_INT16_T"],
i,
enums.PICO_RATIO_MODE["PICO_RATIO_MODE_RAW"],
enums.PICO_ACTION["PICO_ADD"])
assert_pico_ok(status)
status = ps.ps6000aSetNoOfCaptures(scope.handle,Nframes)
assert_pico_ok(status)
scope.run_block()
scope.wait_until_complete()
Ncaptures = ctypes.c_short()
status = ps.ps6000aGetNoOfCaptures(scope.handle, ctypes.byref(Ncaptures))
assert_pico_ok(status)
Ncaptures = Ncaptures.value
print(Ncaptures)
intdump = ctypes.c_uint64()
overflow = (ctypes.c_int16 * Nframes)()
status = ps.ps6000aGetValuesBulk(scope.handle,
0,
None,#ctypes.byref(intdump),
0,
Ncaptures-1,
1,
enums.PICO_RATIO_MODE['PICO_RATIO_MODE_RAW'],
None)
print(status)
assert_pico_ok(status)