class SaleaeEventListener(object): def __init__(self,): self.analyzer = SquareWaveAnalyzer(CHANNEL_NUMBER) self.analyzing = False def on_event(self, event, device_id): """Called when an event is broadcast from the Saleae API wrapper.""" if event.id == EVENT_ID_ONCONNECT: device = PyDevicesManager.get_device(device_id) if device is not None: print("Device connected with id %d" % device_id) device.set_analyzer(self.analyzer) # There is a long-standing issue with the Logic16 device API where the number of channels # seems to matter, and also needs to be a power of two. Using 3 channels causes major # fluctuations in data, but using 4 channels seems much more stable. device.set_active_channels(list(range(4))) # Arbitrarily pick 40MHz as the sampling rate device.set_sampling_rate_hz(40000000) device.set_use_5_volts(False) print("Analyzing channel %d with %s" % (CHANNEL_NUMBER, self.analyzer.get_name())) device.read_start() self.analyzing = True elif event.id == EVENT_ID_ONDISCONNECT: self.stop() elif event.id == EVENT_ID_ONERROR: print("\nDevice: %d, Event ID: %d, Event Name: %s, Message: %s" % (device_id, event.id, event.name, event.data)) def stop(self,): self.analyzing = False if self.analyzer is not None: print("\nShutting down %s" % self.analyzer.get_name()) iface = self.analyzer.get_interface() if iface is not None: iface.stop()
def __init__(self,): self.analyzer = SquareWaveAnalyzer(CHANNEL_NUMBER) self.analyzing = False