fix: 修复动作队列线程安全问题
This commit is contained in:
13
action.py
13
action.py
@@ -187,27 +187,40 @@ class cmd_cls():
|
|||||||
class axis_cls():
|
class axis_cls():
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.axis_queue = queue.Queue()
|
self.axis_queue = queue.Queue()
|
||||||
|
self.busy = False
|
||||||
pass
|
pass
|
||||||
def axis_z(self, _distance, _time_via = -1):
|
def axis_z(self, _distance, _time_via = -1):
|
||||||
|
while self.busy is True:
|
||||||
|
pass
|
||||||
self.axis_queue.put(lambda: cmd.z(20, _distance, _time_via))
|
self.axis_queue.put(lambda: cmd.z(20, _distance, _time_via))
|
||||||
pass
|
pass
|
||||||
def axis_z2(self, _position, _time_via = -1):
|
def axis_z2(self, _position, _time_via = -1):
|
||||||
|
while self.busy is True:
|
||||||
|
pass
|
||||||
self.axis_queue.put(lambda: cmd.z2(20, _position, _time_via))
|
self.axis_queue.put(lambda: cmd.z2(20, _position, _time_via))
|
||||||
pass
|
pass
|
||||||
def axis_x(self, _distance, _time_via = -1):
|
def axis_x(self, _distance, _time_via = -1):
|
||||||
|
while self.busy is True:
|
||||||
|
pass
|
||||||
self.axis_queue.put(lambda: cmd.x(1, _distance, _time_via))
|
self.axis_queue.put(lambda: cmd.x(1, _distance, _time_via))
|
||||||
pass
|
pass
|
||||||
def axis_x2(self, _position, _time_via = -1):
|
def axis_x2(self, _position, _time_via = -1):
|
||||||
|
while self.busy is True:
|
||||||
|
pass
|
||||||
self.axis_queue.put(lambda: cmd.x2(1, _position, _time_via))
|
self.axis_queue.put(lambda: cmd.x2(1, _position, _time_via))
|
||||||
pass
|
pass
|
||||||
def pop(self):
|
def pop(self):
|
||||||
|
self.busy = True
|
||||||
while self.axis_queue.qsize() > 0:
|
while self.axis_queue.qsize() > 0:
|
||||||
logger.info(f"axis cmd {self.axis_queue.qsize()}")
|
logger.info(f"axis cmd {self.axis_queue.qsize()}")
|
||||||
self.axis_queue.get()()
|
self.axis_queue.get()()
|
||||||
self.axis_queue.task_done()
|
self.axis_queue.task_done()
|
||||||
time.sleep(0.005)
|
time.sleep(0.005)
|
||||||
|
self.busy = False
|
||||||
pass
|
pass
|
||||||
def exec(self, _block:bool = True):
|
def exec(self, _block:bool = True):
|
||||||
|
while self.busy is True:
|
||||||
|
pass
|
||||||
if _block is True:
|
if _block is True:
|
||||||
self.pop()
|
self.pop()
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user