ndata = args.ndata if 10000000 >= args.ndata >= 1000 else 10000 if 10000000 > args.start >= 0: wvfm_start = args.start else: wvfm_start = 0 if 10000000 >= args.start + args.ndata > wvfm_start: wvfm_stop = args.start + args.ndata else: wvfm_stop = args.start + 1000 # connect to oscilloscope sOsci = USBTMCObject(USBInstruments['LABOR']['vendorID'], USBInstruments['LABOR']['productID']) print ("\tInstrument: " + str(sOsci.ask("*IDN?"))) #sOsci.cmd('PRE:XUNIT "{0}"'.format(args.xunit)) sOsci.cmd('HORIZONTAL:SCALE {0}'.format(args.scale)) sOsci.cmd('HORIZONTAL:RECORDLENGTH {0}'.format(ndata)) sOsci.cmd("HEADER 1") print sOsci.ask('HORIZONTAL:SCALE?') print sOsci.ask('HORIZONTAL:RECORDLENGTH?') header = sOsci.ask("WFMOUTPRE?") npoints = sOsci.ask("WFMOUTPRE:NR_PT?") xzero = float(sOsci.ask("WFMOUTPRE:XZERO?").strip().split(' ')[-1].replace('"','')) xincr = float(sOsci.ask("WFMOUTPRE:XINCR?").strip().split(' ')[-1].replace('"', '')) xunit = sOsci.ask("WFMOUTPRE:XUNIT?").strip().split(' ')[-1].replace('"', '') yzero = float(sOsci.ask("WFMOUTPRE:YZERO?").strip().split(' ')[-1].replace('"', '')) yoffs = float(sOsci.ask("WFMOUTPRE:YOFF?").strip().split(' ')[-1].replace('"', '')) ymult = float(sOsci.ask("WFMOUTPRE:YMULT?").strip().split(' ')[-1].replace('"', ''))
parser.add_argument("--start", type=int, default=1, help="first point") parser.add_argument("--stop", type=int, default=1000000, help="last point") parser.add_argument("-d", "--draw", help="just print the waveform specified by file (must be ROOT!)", action="store_true") parser.add_argument("-i", "--interactive", action="store_true") args = parser.parse_args() if FORCE_DRAW: args.draw = True if not args.draw: print "WARNING: Make sure, the part of the waveform you want to transfer is within the datapoint range of max. 1M!" # connect to oscilloscope sOsci = USBTMCObject(USBInstruments['LABOR']['vendorID'], USBInstruments['LABOR']['productID']) print "\tInstrument: " + str(sOsci.ask("*IDN?")) # set up for waveform transfer sOsci.cmd("DATA:SOURCE CH1") sOsci.cmd("DATA:START {0}".format(args.start)) sOsci.cmd("DATA:STOP {0}".format(args.stop)) sOsci.cmd("DATA:ENCDG ASCII") sOsci.cmd("DATA:WIDTH 2") sOsci.cmd("HEADER 1") sOsci.cmd("VERBOSE 1") sOsci.cmd("*WAI") header = sOsci.ask("WFMOUTPRE?") npoints = sOsci.ask("WFMOUTPRE:NR_PT?") xzero = float(re.findall(r'\b\d+\b', sOsci.ask("WFMOUTPRE:XZERO?"))[0]) xincr = float(re.findall(r'\b\d+\b', sOsci.ask("WFMOUTPRE:XINCR?"))[0]) xunit = sOsci.ask("WFMOUTPRE:XUNIT?") yzero = float(re.findall(r'\b\d+\b', sOsci.ask("WFMOUTPRE:YZERO?"))[0]) yoffs = float(re.findall(r'\b\d+\b', sOsci.ask("WFMOUTPRE:YOFF?"))[0])
# argparse if len(sys.argv) < 2: odir = './' else: odir = str(sys.argv[1]).strip() fileprefix = 'RecWvfm_' wvfm_start, wvfm_stop = 0, 1000000 # connect to oscilloscope sOsci = USBTMCObject(USBInstruments['LABOR']['vendorID'], USBInstruments['LABOR']['productID']) print ("\tInstrument: " + str(sOsci.ask("*IDN?"))) # set up for single acquisition print sOsci.ask("ACQ:MAXS?") sOsci.cmd("ACQ:MODE HIRes") sOsci.cmd("ACQ:STOPAfter SEQ") sOsci.cmd("ACQ:STATE RUN") # set up for waveform transfer sOsci.cmd("DATA:SOURCE CH1") sOsci.cmd("DATA:START {0}".format(wvfm_start)) sOsci.cmd("DATA:STOP {0}".format(wvfm_stop)) sOsci.cmd("DATA:ENCDG SRI") sOsci.cmd("DATA:WIDTH 2") sOsci.cmd("HEADER 1") sOsci.cmd("VERBOSE 0") sOsci.cmd("*WAI") time.sleep(0.5)