Reconstruct debounce, enahnce display.

Former-commit-id: 39c845baadaa727877866fe43b86a02ebf64c915
This commit is contained in:
2025-05-26 21:54:14 +08:00
parent f39768eb8b
commit b271dd3468
2 changed files with 137 additions and 93 deletions

View File

@ -2,7 +2,7 @@
import serial.tools.list_ports
import time
OFFLINE_DEBUG = True
OFFLINE_DEBUG = False
def _list_ch340_ports():
ports = serial.tools.list_ports.comports()
@ -17,10 +17,13 @@ def _list_ch340_ports():
return []
if OFFLINE_DEBUG:
print("WARNING: Running in offline debug mode, no actual hardware interaction.\n"*3)
time.sleep(2)
class CH340:
def __init__(self):
self._speed = 0.0
self._time = (0,0,0)
self.start = 0
@property
def speed(self):
@ -38,6 +41,13 @@ if OFFLINE_DEBUG:
def time(self,x):
self._time = x
@property
def running(self):
return time.time() - self.start < self._get_time()
def _get_time(self):
return (self.time[0]*3600 + self.time[1]*60 + self.time[2])/2
def _prepare(self,speed,t,vol):
if speed is not None:
self.speed = speed
@ -63,24 +73,37 @@ if OFFLINE_DEBUG:
def push(self,speed=None,t=None,vol=None):
self._prepare(speed,t,vol)
time.sleep(self.time[0]*3600 + self.time[1]*60 + self.time[2])
self.start = time.time()
time.sleep(self._get_time())
def pull(self,speed=None,t=None,vol=None):
self._prepare(speed,t,vol)
time.sleep(self.time[0]*3600 + self.time[1]*60 + self.time[2])
self.start = time.time()
time.sleep(self._get_time())
def push_async(self,speed=None,t=None,vol=None):
self._prepare(speed,t,vol)
self.start = time.time()
time.sleep(0.01)
def pull_async(self,speed=None,t=None,vol=None):
self._prepare(speed,t,vol)
self.start = time.time()
time.sleep(0.01)
def stop(self):
self.start = 0
print("Stop")
else:
class CH340:
def __init__(self,idx=0):
self.port = _list_ch340_ports()[idx] # 串口名
self.pump_ser = serial.Serial(self.port, 9600) # 初始化串口
self._speed = 0.0
self.speed = 0.0
self._time = (0,0,0)
self.time = (0,0,0)
self.start = 0
@property
def speed(self):
@ -116,6 +139,13 @@ else:
self.pump_ser.write(f"q5h{x[2]}d".encode('ascii'))
time.sleep(0.01)
@property
def running(self):
return time.time() - self.start < self._get_time()
def _get_time(self):
return self.time[0]*3600 + self.time[1]*60 + self.time[2]
def _prepare(self,speed,t,vol):
if speed is not None:
self.speed = speed
@ -138,27 +168,27 @@ else:
def push(self,speed=None,t=None,vol=None):
self.push_async(speed,t,vol)
time.sleep(self.time[0]*3600 + self.time[1]*60 + self.time[2])
time.sleep(self._get_time())
def push_async(self,speed=None,t=None,vol=None):
self._prepare(speed,t,vol)
self.pump_ser.write(b"q6h2d")
self.start = time.time()
time.sleep(0.01)
def pull(self,speed=None,t=None,vol=None):
self.pull_async(speed,t,vol)
time.sleep(self.time[0]*3600 + self.time[1]*60 + self.time[2])
time.sleep(self._get_time())
def pull_async(self,speed=None,t=None,vol=None):
print(1)
print(t,speed,vol)
self._prepare(speed,t,vol)
self.pump_ser.write(b"q6h3d")
print(self.time,self.speed)
self.start = time.time()
time.sleep(0.01)
def stop(self):
self.pump_ser.write(b"q6h6d")
self.start = 0
time.sleep(0.01)
def __del__(self):