def test_read_data(self): print "Testing reading data from the oscilloscope." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() ch1_data, _ = scope.read_data(data_size=0x400) print ch1_data assert ch1_data assert scope.close_handle()
def test_set_one_channel_and_read(self): print "Testing setting one channel and reading it." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware(mod_firmware_01) assert scope.set_ch1_voltage_range(0xA) assert scope.set_sample_rate(0x10) assert scope.set_num_channels(1) ch1_data, ch2_data = scope.read_data(0x4000) assert ch1_data assert not ch2_data assert scope.close_handle()
def test_data_scaling(self): print "Testing setting various scale facotrs and reading." scale_factor = 0x01 scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() assert scope.set_ch1_voltage_range(scale_factor) assert scope.set_sample_rate(27) ch1_data, _ = scope.read_data(0x100000) ch1_data = scope.scale_read_data(ch1_data, scale_factor) print "Max:", max(ch1_data), "(V), Min:", min(ch1_data), "(V)" assert ch1_data assert scope.close_handle()
def test_read_many_sizes(self): print "Testing reading many different data sizes" scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() data_size = 0x400 for _ in xrange(11): print "DATA SIZE", data_size ch1_data, ch2_data = scope.read_data(data_size=data_size, raw=True) print len(ch1_data) print len(ch2_data) assert ch1_data, ch2_data data_size <<= 1 assert scope.close_handle()
new_data = data[:window] for i, point in enumerate(data[window:-window]): new_data.append(sum(data[i-window:i+window+1])/(2*window+1)) new_data.extend(data[-window:]) return new_data sample_rate_index = 0x04 voltage_range = 0x01 data_points = 0x2000 scope = Oscilloscope() scope.setup() scope.open_handle() scope.set_sample_rate(sample_rate_index) scope.set_ch1_voltage_range(voltage_range) ch1_data, _ = scope.read_data(data_points) voltage_data = scope.scale_read_data(ch1_data, voltage_range) timing_data, _ = scope.convert_sampling_rate_to_measurement_times(data_points, sample_rate_index) scope.close_handle() pylab.title('Scope Visualization Example') pylab.plot(timing_data, voltage_data, color='#009900', label='Raw Trace') pylab.plot(timing_data, apply_data_smoothing(voltage_data, window=3), color='#0033CC', label='Smoothed Trace') pylab.xlabel('Time (s)') pylab.ylabel('Voltage (V)') pylab.grid() pylab.legend(loc='best') pylab.xticks(rotation=30) pylab.tight_layout() pylab.show()
sample_rate_index = 1 voltage_range = 0x01 cal_freq = 10 # skip first samples due to unstable xfer skip = 2 * 0x400 data_points = skip + 20 * 0x400 scope = Oscilloscope() scope.setup() scope.open_handle() scope.set_sample_rate(sample_rate_index) scope.set_ch1_voltage_range(voltage_range) print(scope.set_calibration_frequency(cal_freq)) ch1_data, _ = scope.read_data(data_points) #,raw=True)#timeout=1) voltage_data = scope.scale_read_data(ch1_data[skip:], voltage_range) timing_data, _ = scope.convert_sampling_rate_to_measurement_times( data_points - skip, sample_rate_index) scope.close_handle() if len(timing_data) != len(voltage_data): w = sys.stderr.write w('data lengths differ!\n') w(str([(s, len(eval(s + '_data'))) for s in 'timing voltage'.split()])) w('\n') exit(1) # store the data with open('/tmp/scopevis.dat', 'wt') as ouf:
for i, point in enumerate(data[window:-window]): new_data.append(sum(data[i-window:i+window+1])/(2*window+1)) new_data.extend(data[-window:]) return new_data sample_rate_index = 0x04 voltage_range = 0x01 data_points = 0x2000 scope = Oscilloscope() scope.setup() scope.open_handle() scope.set_sample_rate(sample_rate_index) scope.set_ch1_voltage_range(voltage_range) ch1_data, _ = scope.read_data(data_points)#,raw=True)#timeout=1) voltage_data = scope.scale_read_data(ch1_data, voltage_range) timing_data, _ = scope.convert_sampling_rate_to_measurement_times(data_points, sample_rate_index) scope.close_handle() if len(timing_data) != len(voltage_data): w = sys.stderr.write w('data lengths differ!\n') w(str([(s,len(eval(s+'_data')))for s in 'timing voltage'.split()])) w('\n') exit(1) # store the data with open('/tmp/scopevis.dat', 'wt') as ouf: ouf.write('\n'.join('{:8f}'.format(v) for v in voltage_data))
new_data.append( sum(data[i - window:i + window + 1]) / (2 * window + 1)) new_data.extend(data[-window:]) return new_data sample_rate_index = 0x04 voltage_range = 0x01 data_points = 0x2000 scope = Oscilloscope() scope.setup() scope.open_handle() scope.set_sample_rate(sample_rate_index) scope.set_ch1_voltage_range(voltage_range) ch1_data, _ = scope.read_data(data_points) voltage_data = scope.scale_read_data(ch1_data, voltage_range) timing_data, _ = scope.convert_sampling_rate_to_measurement_times( data_points, sample_rate_index) scope.close_handle() pylab.title('Scope Visualization Example') pylab.plot(timing_data, voltage_data, color='#009900', label='Raw Trace') pylab.plot(timing_data, apply_data_smoothing(voltage_data, window=3), color='#0033CC', label='Smoothed Trace') pylab.xlabel('Time (s)') pylab.ylabel('Voltage (V)') pylab.grid() pylab.legend(loc='best') pylab.xticks(rotation=30)