Fix debounce bug, fix bounce time error

Former-commit-id: 4771ecad93519acb1316e8839f1aeb56c7aa2622
This commit is contained in:
2025-05-26 22:35:43 +08:00
parent 39e841f503
commit b95037a301

View File

@ -14,6 +14,7 @@ class MAT:
self.bounce_time = bounce_time
self.total_volume = 0
self.start_time = time.time()
self.middle_time = time.time()
# 将开始时间转化为年月日时分秒的格式,后续文件命名都已此命名
self.formatted_time = datetime.fromtimestamp(self.start_time).strftime('%Y%m%d_%H%M%S')
@ -77,6 +78,7 @@ class MAT:
if self.typ == 0:
self.process_left(now)
self.typ = 1
self.middle_time = now
print(f"检测到middle切换到慢速模式当前体积: {val}")
elif ret == "colored":
@ -102,12 +104,14 @@ class MAT:
pass
# 在慢速模式下检查是否要切回快速模式
if self.typ == 1:
if self.typ == 1 and now - self.middle_time > self.bounce_time:
non_middle_count = sum(1 for _, state, _ in self.history if state == "transport")
if len(self.history) > 3 and non_middle_count / len(self.history) > 0.9:
print(f"非middle比例超过90%,切回快速模式,当前体积: {val}")
if non_middle_count / len(self.history) > 0.9:
self.typ = 0
self.process_left(now)
# TODO: 滑动到第一个middle状态
self.middle_time = 0
print(f"非middle比例超过90%,切回快速模式,当前体积: {val}")
# 如果已记录colored但在bounce_time内colored比例小于90%,重置
if self.colored_volume is not None and now - self.colored_time > self.bounce_time:
@ -115,8 +119,12 @@ class MAT:
if colored_count / len(self.history) < 0.9:
print(f"colored比例小于90%重置colored记录")
self.colored_volume = None
flag = False
for t, state,vol in self.history:
if state == "colored":
if not flag:
flag = True
continue
print(f"滑动窗口到: {vol} at {t}")
self.colored_volume = vol
self.colored_time = t
@ -178,13 +186,15 @@ class MAT:
print('----->>Visual Endpoint<<-----')
print(f"Total Volume: {self.total_volume} ml")
print(f"End point volume: {self.colored_volume} ml")
print(f"Theorical fixed volume: {self.colored_volume} ml")
if __name__ == "__main__":
# 创建MAT类的实例并运行
mat = MAT(
videoSourceIndex = 1,
bounce_time=0.2
bounce_time=1
)
mat.run(