From: Jens Steinhauser Date: Sun, 4 Oct 2015 03:39:43 +0000 (+0200) Subject: Timestamp measurements as early as possible. X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-meter.git;a=commitdiff_plain;h=6c05c913c3d0140b1431b832e4a550665e659bf7 Timestamp measurements as early as possible. --- diff --git a/datamodel.py b/datamodel.py index 53c70bc..6ce9158 100644 --- a/datamodel.py +++ b/datamodel.py @@ -22,7 +22,6 @@ import collections import itertools import qtcompat import sigrok.core as sr -import time import util try: @@ -143,8 +142,8 @@ class MeasurementDataModel(QtGui.QStandardItemModel): self.sort(0) return item - @QtCore.Slot(object, object, object) - def update(self, device, channel, data): + @QtCore.Slot(float, sr.classes.Device, sr.classes.Channel, tuple) + def update(self, timestamp, device, channel, data): '''Update the data for the device (+channel) with the most recent measurement from the given payload.''' @@ -161,7 +160,7 @@ class MeasurementDataModel(QtGui.QStandardItemModel): # The samples role is a dictionary that contains the old samples for each unit. # Should be trimmed periodically, otherwise it grows larger and larger. - sample = (time.time(), value) + sample = (timestamp, value) traces = item.data(MeasurementDataModel.tracesRole) traces[unit].append(sample) diff --git a/samplingthread.py b/samplingthread.py index 017f895..fa95f42 100644 --- a/samplingthread.py +++ b/samplingthread.py @@ -22,6 +22,7 @@ import qtcompat import re import sigrok.core as sr +import time QtCore = qtcompat.QtCore QtGui = qtcompat.QtGui @@ -33,7 +34,7 @@ class SamplingThread(QtCore.QObject): '''Helper class that does the actual work in another thread.''' '''Signal emitted when new data arrived.''' - measured = QtCore.Signal(object, object, object) + measured = QtCore.Signal(float, sr.classes.Device, sr.classes.Channel, tuple) '''Signal emmited in case of an error.''' error = QtCore.Signal(str) @@ -142,6 +143,8 @@ class SamplingThread(QtCore.QObject): self.session.stop() def callback(self, device, packet): + now = time.time() + if not sr: # In rare cases it can happen that the callback fires while # the interpreter is shutting down. Then the sigrok module @@ -160,7 +163,7 @@ class SamplingThread(QtCore.QObject): # The most recent value. value = packet.payload.data[0][-1] - self.measured.emit(device, channel, + self.measured.emit(now, device, channel, (value, packet.payload.unit, packet.payload.mq_flags)) # Signal used to start the worker across threads.