@@ -232,6 +232,7 @@ def run_for_degrees(self, degrees, speed=None, blocking=True):
232
232
if not blocking :
233
233
self ._queue ((self ._run_for_degrees , (degrees , speed )))
234
234
else :
235
+ self ._wait_for_nonblocking ()
235
236
self ._run_for_degrees (degrees , speed )
236
237
237
238
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
253
254
if not blocking :
254
255
self ._queue ((self ._run_to_position , (degrees , speed , direction )))
255
256
else :
257
+ self ._wait_for_nonblocking ()
256
258
self ._run_to_position (degrees , speed , direction )
257
259
258
260
def _run_for_seconds (self , seconds , speed ):
@@ -284,6 +286,7 @@ def run_for_seconds(self, seconds, speed=None, blocking=True):
284
286
if not blocking :
285
287
self ._queue ((self ._run_for_seconds , (seconds , speed )))
286
288
else :
289
+ self ._wait_for_nonblocking ()
287
290
self ._run_for_seconds (seconds , speed )
288
291
289
292
def start (self , speed = None ):
@@ -292,6 +295,7 @@ def start(self, speed=None):
292
295
:param speed: Speed ranging from -100 to 100
293
296
:raises MotorError: Occurs when invalid speed specified
294
297
"""
298
+ self ._wait_for_nonblocking ()
295
299
if self ._runmode == MotorRunmode .FREE :
296
300
if self ._currentspeed == speed :
297
301
# Already running at this speed, do nothing
@@ -316,6 +320,7 @@ def start(self, speed=None):
316
320
317
321
def stop (self ):
318
322
"""Stop motor"""
323
+ self ._wait_for_nonblocking ()
319
324
self ._runmode = MotorRunmode .NONE
320
325
self ._currentspeed = 0
321
326
self .coast ()
@@ -444,6 +449,10 @@ def release(self, value):
444
449
def _queue (self , cmd ):
445
450
Device ._instance .motorqueue [self .port ].put (cmd )
446
451
452
+ def _wait_for_nonblocking (self ):
453
+ """Wait for nonblocking commands to finish"""
454
+ Device ._instance .motorqueue [self .port ].join ()
455
+
447
456
448
457
class MotorPair :
449
458
"""Pair of motors
0 commit comments