add calibration serial command

This commit is contained in:
2025-05-05 22:52:16 +02:00
parent 2c2933f0cb
commit 253f439836
3 changed files with 45 additions and 9 deletions

View File

@@ -7,7 +7,7 @@ from serial.tools import list_ports
from .config import DEFAULT_CALIB, DEFAULT_CALIB_WEIGHT, MOV_AVG_DEFAULTS
class WeightReader:
class SerialReader:
@property
def value(self):
return (self.current_raw_weight - self._tare) * self.calib_factor
@@ -20,9 +20,20 @@ class WeightReader:
def calib_factor(self, value):
self.calib_factor = value
self._raw_reset_threshold = self.reset_threshold / value
@property
def calibrating(self):
return self._calibrating
@calibrating.setter
def calibrating(self, value):
if value:
self.calib_window = []
self._calibrating = value
def __init__(self):
self.running = True
self._calibrating = False
self.ports = [d.device for d in list_ports.grep('usbmodem')]
self.serial = None
@@ -36,6 +47,7 @@ class WeightReader:
self._tare = 0.0
self.window = []
self.calib_window = []
self.current_raw_weight = 0
self.ignored_samples = 0
@@ -49,13 +61,23 @@ class WeightReader:
def disconnect(self):
self.serial.close()
self.serial = None
def reset(self):
if self.serial is not None:
self.serial.write('reset'.encode())
def read_weights(self):
while self.running:
if self.serial is not None:
try:
line = self.serial.readline().decode('utf-8')
if line.startswith('calibrated'):
print('calibrated')
continue
raw_weight = int(line.split(',')[1])
if self._calibrating:
self.calib_window.append(raw_weight)
self.filter(raw_weight)
except: