add calibration serial command
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user