show moving time, only after first movement

This commit is contained in:
Daniel Barlow 2022-12-11 11:01:41 +00:00
parent c40aa38862
commit 562497c2df

26
csc.py
View File

@ -5,7 +5,7 @@ import struct
import sys import sys
import time import time
from datetime import datetime from datetime import datetime, timedelta
import os import os
import pygame import pygame
@ -22,7 +22,8 @@ class CadenceListener:
wheelSpeed = 0 wheelSpeed = 0
crankSpeed = 0 crankSpeed = 0
crankSpeedMax = 120 crankSpeedMax = 120
startTime = None elapsedTime = None
firstMessage = True
def getWheelSpeed(self): def getWheelSpeed(self):
return self.wheelSpeed return self.wheelSpeed
@ -35,13 +36,13 @@ class CadenceListener:
offset = offset + 6 offset = offset + 6
if flags & 2: if flags & 2:
crankRevolutions,crankTime = struct.unpack('<HH', bytes(value)[offset:offset+4]) crankRevolutions,crankTime = struct.unpack('<HH', bytes(value)[offset:offset+4])
# print(wheelrevs, wheeltime, crankrevs, cranktime)
if(not self.startTime): if(self.firstMessage):
self.prevCtime = crankTime self.prevCtime = crankTime
self.prevWtime = wheelTime self.prevWtime = wheelTime
self.prevCrevs = crankRevolutions self.prevCrevs = crankRevolutions
self.prevWrevs = wheelRevolutions self.prevWrevs = wheelRevolutions
self.startTime = datetime.now() self.firstMessage = False
return return
# handle wraparound # handle wraparound
@ -62,14 +63,15 @@ class CadenceListener:
self.prevCrevs = crankRevolutions self.prevCrevs = crankRevolutions
if(wheelTime > self.prevWtime): if(wheelTime > self.prevWtime):
revs = ((wheelRevolutions - self.prevWrevs) / millis = float(wheelTime - self.prevWtime)
float(wheelTime - self.prevWtime)) self.rolling = True
revs = (wheelRevolutions - self.prevWrevs) / millis
self.wheelSpeed = revs * 2205 * 3600 / 1024.0 self.wheelSpeed = revs * 2205 * 3600 / 1024.0
print("wheel", print("wheel", millis, self.wheelSpeed)
(float(wheelTime - self.prevWtime)),
self.wheelSpeed)
self.prevWtime = wheelTime self.prevWtime = wheelTime
self.prevWrevs = wheelRevolutions self.prevWrevs = wheelRevolutions
self.elapsedTime = (self.elapsedTime or 0) + (millis / 1024.0)
class Biscuit: class Biscuit:
listener = CadenceListener() listener = CadenceListener()
@ -95,8 +97,8 @@ class Biscuit:
(scale/16,scale + 20), (scale/16,scale + 20),
"{: 5.1f} rpm".format(self.listener.crankSpeed), "{: 5.1f} rpm".format(self.listener.crankSpeed),
(0,255,0)) (0,255,0))
if self.listener.startTime != None: if self.listener.elapsedTime != None:
runTime = datetime.now() - self.listener.startTime runTime = timedelta(seconds=self.listener.elapsedTime)
timelabel = str(runTime)[0:9] timelabel = str(runTime)[0:9]
else: else:
timelabel = datetime.now().strftime("%H:%M:%S") timelabel = datetime.now().strftime("%H:%M:%S")