time = numpy.arange(-300.0/50*timescale, 300.0/50*timescale, timescale/50.0) # If we generated too many points due to overflow, crop the length of time. if (time.size > data.size): time = time[0:600:1] # See if we should use a different time axis if (time[599] < 1e-3): time = time * 1e6 tUnit = "uS" elif (time[599] < 1): time = time * 1e3 tUnit = "mS" else: tUnit = "S" # Start data acquisition again, and put the scope back in local mode test.write(":RUN") test.write(":KEY:FORC") test.close() # Plot the data plot.plot(time, data) plot.title("Oscilloscope Channel 1") plot.ylabel("Voltage (V)") plot.xlabel("Time (" + tUnit + ")") plot.xlim(time[0], time[599]) plot.show()
# PyUSBtmc # get_data.py # # Copyright (c) 2011 Mike Hadmack # This code is distributed under the MIT license import numpy import sys from matplotlib import pyplot from pyusbtmc import RigolScope """ Capture data from Rigol oscilloscope and write to a file usage: python save_channel.py <filename> if filename is not given STDOUT will be used""" try: filename = sys.argv[1] except: filename = "" if filename == "--help": print """Usage: 1%s [filename]\n Reads both traces from oscilloscope and writes as ASCII tabular data to filename. If no filename is given the program outputs to STDOUT. STDOUT can be directed into a file or piped into another application. For example:\n 1%s myfile\n 1%s > myfile\n 1%s | ./plot_data.py""" % sys.argv[ 0 ] sys.exit(1) print filename scope = RigolScope("/dev/usbtmc0") scope.grabData() scope.writeWaveformToFile(filename) scope.close()