一个非阻塞移动命令仍然阻塞我的代码-打印版本 +- RoboDK论坛(//www.x7093.com/forum) +——论坛:RoboDK (EN) (//www.x7093.com/forum/Forum-RoboDK-EN) +——论坛:RoboDK API (//www.x7093.com/forum/Forum-RoboDK-API) +——线程:一个非阻塞移动命令仍然阻塞我的代码(/ Thread-A-non-blocking-movement-command-is-still-blocking-my-code) |
一个非阻塞移动命令仍然阻塞我的代码-petsven-06-27-2022 我正在模拟模式下运行代码。我想在不阻塞的情况下移动机械臂,这样我就可以在机械臂移动时获得TCP的位置。我正在使用moveJ命令移动机械臂。为了检查MoveJ命令是否仍然阻塞,我添加了打印时间命令。这是我的代码:
代码:
运动中的运动:
我可以看出代码仍然阻塞,因为在开始和停止打印语句之间有1.3秒的延迟。为什么代码仍然阻塞?它总是在模拟模式下阻塞吗?我需要使用像“asyncio”这样的库来使它不阻塞吗? 回复:一个非阻塞移动命令仍然阻塞我的代码-petsven-07-06-2022 我可以通过使用async.io让它工作:
代码:
Async def non_blocking(循环,执行器):
回复:一个非阻塞移动命令仍然阻塞我的代码-Maarten-08-29-2022 我也遇到了同样的问题: 我在一个站点中有两个机器人(R1和R2),我想从API向它们中的任何一个发射非阻塞移动命令。最简单的形式:
代码:
R1. movej (R1_T1,False) #1关节移动第一个机器人R1到目标R1_T1
尽管选项blocking=False,两个连续的移动命令#1和#2到R1有效地引入了阻塞行为,因为命令#2直到命令#1完成才会执行。因此,对R2执行命令#3和#4也会被阻塞,直到命令#1完成。 我想要的行为是R1连续执行它的命令#1和#2,而不阻止R2开始连续执行命令#3和#4,与彼此的繁忙状态无关。 如何实现异步的任何建议。在这种情况下,还是其他方式? 最好的问候, Maarten |