[Stirrer]
- put things into base class git-svn-id: http://moon:8086/svn/projects/HendiControl@135 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
+34
-12
@@ -3,36 +3,58 @@ import abc
|
||||
|
||||
|
||||
class AStirrer(abc.ABC):
|
||||
def __init__(self):
|
||||
pass
|
||||
def __init__(self, dt):
|
||||
self.dt = dt
|
||||
self.speed = 0
|
||||
self.cycleTime = 1
|
||||
self.dutyCycle = 1
|
||||
self.cycleCounter = 0
|
||||
self.isOn = 0
|
||||
|
||||
def log(self, s):
|
||||
print("{:.2f}: {}".format(time.time(), s))
|
||||
|
||||
@abc.abstractmethod
|
||||
def process(self):
|
||||
pass
|
||||
isOn = self.isOn
|
||||
self.cycleCounter += self.dt
|
||||
if self.cycleCounter >= self.cycleTime:
|
||||
self.cycleCounter -= self.cycleTime
|
||||
isOn = 0
|
||||
|
||||
if self.cycleCounter >= (self.cycleTime * (1-self.dutyCycle)):
|
||||
if not isOn:
|
||||
isOn = 1
|
||||
|
||||
if self.isOn != isOn:
|
||||
if isOn:
|
||||
self.onSetSpeed(self.speed)
|
||||
else:
|
||||
self.onSetSpeed(0)
|
||||
|
||||
self.isOn = isOn
|
||||
|
||||
@abc.abstractmethod
|
||||
def setSpeed(self, speed):
|
||||
pass
|
||||
self.speed = speed
|
||||
if self.isOn:
|
||||
self.onSetSpeed(speed)
|
||||
self.log ("Stirrer: Set speed to {} %".format(speed))
|
||||
|
||||
@abc.abstractmethod
|
||||
def setCycleTime(self, time):
|
||||
pass
|
||||
self.cycleTime = time
|
||||
self.log ("Stirrer: Set cycle time to {} s".format(time))
|
||||
|
||||
@abc.abstractmethod
|
||||
def setDutyCycle(self, dutyCycle):
|
||||
pass
|
||||
self.dutyCycle = dutyCycle
|
||||
self.log ("Stirrer: Set duty cycle to {} %".format(100*dutyCycle))
|
||||
|
||||
@abc.abstractmethod
|
||||
def getSpeed(self):
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def start(self):
|
||||
def activate(self):
|
||||
pass
|
||||
|
||||
@abc.abstractmethod
|
||||
def stop(self):
|
||||
def deactivate(self):
|
||||
pass
|
||||
Reference in New Issue
Block a user