Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Knowledge Base Home
  • Contact Us
  • Home
  • Moku:Lab
  • Software integrations
  • Python examples

Python: Oscilloscope (plotting)

Written by Paul Cracknell

Updated at December 22nd, 2020

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Moku:Go
    Moku:Go Arbitrary Waveform Generator Moku:Go Data Logger Moku:Go Frequency Response Analyzer Moku:Go Logic Analyzer & Pattern Generator Moku:Go Oscilloscope & Voltmeter Moku:Go PID Controller Moku:Go Spectrum Analyzer Moku:Go Waveform Generator Moku:Go Power Supplies Moku:Go Digital Filter Box Moku:Go FIR Filter Builder Moku:Go Lock-in Amplifier
  • Moku:Lab
    Windows Moku:Lab general Moku:Lab Instruments iPad app Software integrations
  • Moku:Pro
    Moku:Pro Instruments
+ More

Example Python script to implement the Oscilloscope (plotting)

# pymoku example: Plotting Oscilloscope
# 
# This example demonstrates how you can configure the Oscilloscope instrument,
# and view triggered time-voltage data frames in real-time.
# 
# (c) 2019 Liquid Instruments Pty. Ltd.
# 

from pymoku import Moku
from pymoku.instruments import Oscilloscope

import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

# Connect to your Moku by its device name
# Alternatively, use Moku.get_by_serial('#####') or Moku('192.168.###.###')
m = Moku.get_by_name('Moku')

try:
 i = m.deploy_or_connect(Oscilloscope)

 # Trigger on input Channel 1, rising edge, 0V with 0.1V hysteresis
 i.set_trigger('in1', 'rising', 0, hysteresis=0.1)

 # View +-5usec, i.e. trigger in the centre
 i.set_timebase(-5e-6, 5e-6)

 # Generate an output sinewave on Channel 2, 500mVpp, 1MHz, 0V offset
 i.gen_sinewave(2, 0.5, 1e6, 0)

 # Set the data source of Channel 1 to be Input 1
 i.set_source(1, 'in1')

 # Set the data source of Channel 2 to the generated output sinewave
 i.set_source(2, 'out2')

 # Get initial data frame to set up plotting parameters. This can be done
 # once if we know that the axes aren't going to change (otherwise we'd do
 # this in the loop)
 data = i.get_realtime_data()

 # Set up the plotting parameters
 plt.ion()
 plt.show()
 plt.grid(b=True)
 plt.ylim([-1, 1])
 plt.xlim([data.time[0], data.time[-1]])

 line1, = plt.plot([])
 line2, = plt.plot([])

 # Configure labels for axes
 ax = plt.gca()
 ax.xaxis.set_major_formatter(FuncFormatter(data.get_xaxis_fmt))
 ax.yaxis.set_major_formatter(FuncFormatter(data.get_yaxis_fmt))
 ax.fmt_xdata = data.get_xcoord_fmt
 ax.fmt_ydata = data.get_ycoord_fmt

 # This loops continuously updates the plot with new data
 while True:
 # Get new data
 data = i.get_realtime_data()

 # Update the plot
 line1.set_ydata(data.ch1)
 line2.set_ydata(data.ch2)
 line1.set_xdata(data.time)
 line2.set_xdata(data.time)
 plt.pause(0.001)

finally:
 # Close the connection to the Moku device
 # This ensures network resources and released correctly
 m.close()
moku:lab

Was this article helpful?

Yes
No

Related Articles

  • Python: Frequency Response Analyzer (plotting)
  • Python: Arbitrary Waveform Generator
  • Python: Lock-In Amplifier (plotting)
  • Python Spectrum analyzer 'Max hold' function

Sitemap

  • Moku:Lab
  • Instruments
  • Software
  • Company
  • Support
  • Store
  • Terms & Conditions
  • Privacy Policy

Offices

United States
+1 (619) 332-6230
740 Lomas Santa Fe Dr
Suite 102
Solana Beach, CA 92075

Australia
+61 2 6171 9730
243 Northbourne Avenue
Suite 2
Lyneham, ACT 2602

Follow us

Youtube LinkedIn

官方微信

Contact us
© 2021 Liquid Instruments. All rights reserved.

Definition by Author

0
0
Expand