diff --git a/src/meter/um24c.py b/src/meter/um24c.py index 73367cf..afb374a 100644 --- a/src/meter/um24c.py +++ b/src/meter/um24c.py @@ -144,10 +144,19 @@ def send_command(command): def get_meter_stats(): global rfcomm rfcomm.send(Command.GET_STATUS.value) - sleep(0.25) + sleep(0.30) + + # data = rfcomm.recv(0x8f) data = rfcomm.recv(0x8f) - # assert len(data) == 130 - # assert data[0:2] == PACKET_MAGIC[0] and data[-2:] == PACKET_MAGIC[1] + + if PACKET_MAGIC[0] not in data or PACKET_MAGIC[1] not in data: + return + pkt_start = data.index(PACKET_MAGIC[0]) + pkt_end = data.index(PACKET_MAGIC[1]) + if pkt_end - pkt_start != 128: + return + + data = data[pkt_start:pkt_end+2] try: values = list(unpack(DATA_FORMAT, data)) for i, value in enumerate(values): diff --git a/src/um24clab.py b/src/um24clab.py index c89d291..de9d4ae 100644 --- a/src/um24clab.py +++ b/src/um24clab.py @@ -3,7 +3,7 @@ import sys import traceback from PySide2.QtCore import ( - Qt, QTimer, QObject, Signal, Slot, QRunnable, QThreadPool + Qt, QObject, Signal, Slot, QRunnable, QThreadPool ) from PySide2.QtWidgets import ( QApplication, QMainWindow @@ -89,7 +89,7 @@ class UM24LabWorker(UM24LabUIWorker): while um24c.is_connected(): try: result = self.fn(*self.args, **self.kwargs) - # self.signals.progress.emit(result) + self.signals.progress.emit(result) except Exception: traceback.print_exc() exctype, value = sys.exc_info()[:2] @@ -251,17 +251,14 @@ class UM24Lab(QMainWindow): def action_connect_device(self): worker = UM24LabUIWorker(self.do_connect_device) worker.signals.result.connect(self.connect_device_result) - # worker.signals.finished.connect(...) - # worker.signals.progress.connect(...) self.threadpool.start(worker) def do_update_stats(self, progress_callback): - while um24c.is_connected: - current = um24c.get_meter_stats() - progress_callback.emit(current) + return um24c.get_meter_stats() def update_stats_progress(self, current): self.meter_stats = current + self.update_graphs() def update_stats_finished(self): ui = self.ui