|
@@ -17,9 +17,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
+import curio
|
|
|
import logging
|
|
|
-
|
|
|
-import trio
|
|
|
+import threaing
|
|
|
+import time
|
|
|
|
|
|
import digilib.pin
|
|
|
log = logging.getLogger(__name__+"")
|
|
@@ -42,32 +43,42 @@ class BeeWeighingScale(digilib.pin.PinAPIBase):
|
|
|
class PinAPIBee(digilib.pin.PinAPIBase):
|
|
|
engine_left = None
|
|
|
engine_right = None
|
|
|
+ action_in_process = False
|
|
|
def __init__(self):
|
|
|
super(PinAPIBee,self).__init__()
|
|
|
self.engine_right = self.make_engine(4,17)
|
|
|
self.engine_left = self.make_engine(27,22)
|
|
|
+ def __enter__(self):
|
|
|
+ if self.action_in_process:
|
|
|
+ lpin.debug("action already in process, not entering")
|
|
|
+ return False
|
|
|
def make_engine(self,*args):
|
|
|
return digilib.pin.PCEngine(*args)
|
|
|
- def turn_left(self):
|
|
|
- right_on = self.engine_right.is_on
|
|
|
+ def turn(self,direction,respond_method):
|
|
|
+ lpin.debug(threading.current_thread())
|
|
|
+ with self ad
|
|
|
+ lpin.info("turning {}".format(direction))
|
|
|
+ right_state = self.engine_right.is_on
|
|
|
right_speed = self.engine_right.speed
|
|
|
- left_on = self.engine_left.is_on
|
|
|
+ left_state = self.engine_left.is_on
|
|
|
left_speed = self.engine_left.speed
|
|
|
- self.engine_right.turn_on()
|
|
|
- self.engine_right.set_speed(1)
|
|
|
- self.engine_left.turn_on()
|
|
|
- self.engine_left.set_speed(1)
|
|
|
- trio.sleep(2)
|
|
|
- if not right_on:
|
|
|
- self.engine_right.turn_off()
|
|
|
+ if direction == "right":
|
|
|
+ self.engine_right.set_state(False)
|
|
|
+ self.engine_left.set_state(True)
|
|
|
+ self.engine_left.set_speed(1)
|
|
|
+ elif direction == "left":
|
|
|
+ self.engine_right.set_state(True)
|
|
|
+ self.engine_right.set_speed(1)
|
|
|
+ self.engine_left.set_state(False)
|
|
|
+
|
|
|
+ time.sleep(2)
|
|
|
+ self.engine_right.set_state(right_state)
|
|
|
self.engine_right.set_speed(right_speed)
|
|
|
- if not left_on:
|
|
|
- self.engine_left.turn_off()
|
|
|
+ self.engine_left.set_state(left_state)
|
|
|
self.engine_left.set_speed(left_speed)
|
|
|
+ lpin.info("done turning {}".format(direction))
|
|
|
|
|
|
+ def turn_left(self,respond_method):
|
|
|
+ self.turn("left")
|
|
|
def turn_right(self):
|
|
|
- pass
|
|
|
- lpin.info("turning right is not implemented")
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ self.turn("right")
|