@@ -232,6 +232,7 @@ def run_for_degrees(self, degrees, speed=None, blocking=True):
232232 if not blocking :
233233 self ._queue ((self ._run_for_degrees , (degrees , speed )))
234234 else :
235+ self ._wait_for_nonblocking ()
235236 self ._run_for_degrees (degrees , speed )
236237
237238 def run_to_position (self , degrees , speed = None , blocking = True , direction = "shortest" ):
@@ -253,6 +254,7 @@ def run_to_position(self, degrees, speed=None, blocking=True, direction="shortes
253254 if not blocking :
254255 self ._queue ((self ._run_to_position , (degrees , speed , direction )))
255256 else :
257+ self ._wait_for_nonblocking ()
256258 self ._run_to_position (degrees , speed , direction )
257259
258260 def _run_for_seconds (self , seconds , speed ):
@@ -284,6 +286,7 @@ def run_for_seconds(self, seconds, speed=None, blocking=True):
284286 if not blocking :
285287 self ._queue ((self ._run_for_seconds , (seconds , speed )))
286288 else :
289+ self ._wait_for_nonblocking ()
287290 self ._run_for_seconds (seconds , speed )
288291
289292 def start (self , speed = None ):
@@ -292,6 +295,7 @@ def start(self, speed=None):
292295 :param speed: Speed ranging from -100 to 100
293296 :raises MotorError: Occurs when invalid speed specified
294297 """
298+ self ._wait_for_nonblocking ()
295299 if self ._runmode == MotorRunmode .FREE :
296300 if self ._currentspeed == speed :
297301 # Already running at this speed, do nothing
@@ -316,6 +320,7 @@ def start(self, speed=None):
316320
317321 def stop (self ):
318322 """Stop motor"""
323+ self ._wait_for_nonblocking ()
319324 self ._runmode = MotorRunmode .NONE
320325 self ._currentspeed = 0
321326 self .coast ()
@@ -444,6 +449,10 @@ def release(self, value):
444449 def _queue (self , cmd ):
445450 Device ._instance .motorqueue [self .port ].put (cmd )
446451
452+ def _wait_for_nonblocking (self ):
453+ """Wait for nonblocking commands to finish"""
454+ Device ._instance .motorqueue [self .port ].join ()
455+
447456
448457class MotorPair :
449458 """Pair of motors
0 commit comments