class ScopeInterface(QObject): new_data = pyqtSignal(list) def __init__(self, parent=None): super(ScopeInterface, self).__init__(parent) self.inprogress = False def initialize(self): self.sample_rate_index = 8 self.voltage_range = 0x01 self.data_points = 3 * 1024 self.trigger_level = 150 self.trigger_type = +1 self.scope = Oscilloscope() self.scope.setup() self.scope.open_handle() if (not self.scope.is_device_firmware_present): self.scope.flash_firmware() self.scope.set_interface(1) # choose ISO self.scope.set_num_channels(1) self.scope.set_sample_rate(self.sample_rate_index) self.scope.set_ch1_voltage_range(self.voltage_range) time.sleep(0.1) return None def capture(self): if not self.inprogress: self.inprogress = True self.scope.start_capture() shutdown_event = self.scope.read_async(self.data_callback, self.data_points, outstanding_transfers=25) print("Clearing FIFO and starting data transfer...") def data_callback(self, ch1_data, _): d = list(ch1_data) i = 0 #print("got new data ", time.time(), " : ", len(d)) if self.trigger_type > 0: while (i < len(d) - 1) and not (d[i + 1] > self.trigger_level and d[i] < self.trigger_level): i += 1 #print("Trigger at ", i) if (i != len(d) - 1): self.new_data.emit(d[i:]) def stop(self): self.scope.stop_capture() print("Stopping new transfers.") shutdown_event.set() print("Snooze 1") time.sleep(1) print("Closing handle") self.scope.close_handle() print("Handle closed.") self.inprogress = False
class ScopeInterface(QObject): new_data = pyqtSignal(list) def __init__(self, parent=None): super(ScopeInterface, self).__init__(parent) self.inprogress = False def initialize(self): self.sample_rate_index = 8 self.voltage_range = 0x01 self.data_points = 3 * 1024 self.trigger_level = 150 self.trigger_type = +1 self.scope = Oscilloscope() self.scope.setup() self.scope.open_handle() if (not self.scope.is_device_firmware_present): self.scope.flash_firmware() self.scope.set_interface(1); # choose ISO self.scope.set_num_channels(1) self.scope.set_sample_rate(self.sample_rate_index) self.scope.set_ch1_voltage_range(self.voltage_range) time.sleep(0.1) return None def capture(self): if not self.inprogress: self.inprogress = True self.scope.start_capture() shutdown_event = self.scope.read_async(self.data_callback, self.data_points, outstanding_transfers=25) print("Clearing FIFO and starting data transfer...") def data_callback(self, ch1_data, _): d = list(ch1_data) i = 0 #print("got new data ", time.time(), " : ", len(d)) if self.trigger_type > 0: while (i < len(d) - 1) and not (d[i+1] > self.trigger_level and d[i] < self.trigger_level): i += 1 #print("Trigger at ", i) if (i != len(d) - 1): self.new_data.emit(d[i:]) def stop(self): self.scope.stop_capture() print("Stopping new transfers.") shutdown_event.set() print("Snooze 1") time.sleep(1) print("Closing handle") self.scope.close_handle() print("Handle closed.") self.inprogress = False
def test_find_device(self): print "Testing finding device and flashing stock firmware." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() assert scope.close_handle()
def test_clear_fifo(self): print "Testing explicitly clearing the FIFO." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() assert scope.clear_fifo() assert scope.close_handle()
def test_read_firmware(self): print "Testing read_firmware method on scope." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() assert scope.read_firmware() assert scope.close_handle()
def test_set_sample_rate(self): print "Testing setting the sample rate." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() for rate_index in scope.SAMPLE_RATES.keys(): scope.set_sample_rate(rate_index) assert scope.close_handle()
def test_get_cal_values(self): print "Testing getting calibration values." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() cal_values = scope.get_calibration_values() assert cal_values assert scope.close_handle()
def test_flash_firmware(self): print "Testing flashing multiple firmwares." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware(stock_firmware, supports_single_channel=False) assert scope.flash_firmware(mod_firmware_01) assert scope.flash_firmware(stock_firmware, supports_single_channel=False) assert scope.close_handle()
def test_set_channel_voltage_range(self): print "Testing setting the voltage range." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware() for vrange in scope.VOLTAGE_RANGES.keys(): assert scope.set_ch1_voltage_range(vrange) assert scope.set_ch1_voltage_range(vrange) assert scope.close_handle()
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_num_channels(self): print "Testing setting the number of channels with modified firmware." scope = Oscilloscope() assert scope.setup() assert scope.open_handle() assert scope.flash_firmware(mod_firmware_01) assert scope.set_num_channels(1) assert scope.set_num_channels(2) assert scope.set_num_channels(1) 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()
#!/usr/bin/python3 __author__ = 'Robert Cope' from PyHT6022.LibUsbScope import Oscilloscope from PyHT6022.HantekFirmware import mod_firmware_iso as Firmware scope = Oscilloscope() scope.setup() scope.open_handle() scope.flash_firmware(firmware=Firmware) scope.close_handle()
__author__ = 'Jochen Hoenicke' from PyHT6022.LibUsbScope import Oscilloscope scope = Oscilloscope() scope.setup() scope.open_handle() eeprom = scope.read_eeprom(0, 256) scope.close_handle() print eeprom.encode('hex')