fix: 修复动作队列线程安全问题

This commit is contained in:
bmy
2024-06-16 17:52:24 +08:00
parent 0a0e597fe9
commit d340ad044d

View File

@@ -187,27 +187,40 @@ class cmd_cls():
class axis_cls():
def __init__(self) -> None:
self.axis_queue = queue.Queue()
self.busy = False
pass
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))
pass
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))
pass
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))
pass
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))
pass
def pop(self):
self.busy = True
while self.axis_queue.qsize() > 0:
logger.info(f"axis cmd {self.axis_queue.qsize()}")
self.axis_queue.get()()
self.axis_queue.task_done()
time.sleep(0.005)
self.busy = False
pass
def exec(self, _block:bool = True):
while self.busy is True:
pass
if _block is True:
self.pop()
else: