(grbl) SENT: $J=G91G21X-0.00Y0.14Z0.00F125.1
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.12Z0.00F106.4
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.10Z0.00F89.7
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.08Z0.00F75.7
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.07Z0.00F64.1
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.06Z0.00F54.2
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y0.05Z0.00F46.0
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y-0.09Z0.00F80.1
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y-0.07Z0.00F67.8
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y-0.06Z0.00F57.9
(grbl) waiting for "ok"
(grbl) RECV: "ok"
(grbl) SENT: $J=G91G21X-0.00Y-0.05Z0.00F48.5
(grbl) waiting for "ok"
(grbl) RECV: "error:8"
Exception in thread Thread-1:
Traceback (most recent call last):
File "d:\Anaconda3\lib\threading.py", line 914, in _bootstrap_inner
self.run()
File "d:\Anaconda3\lib\threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "jog.py", line 72, in jogging_state_machine
jog(*motion, f = feedrate)
File "jog.py", line 21, in jog
raise e
File "jog.py", line 16, in jog
b.command_ok(jog_command)
File "d:\github\cartman\cartman\grbl.py", line 138, in command_ok
return self.waitok(timeout)
File "d:\github\cartman\cartman\grbl.py", line 122, in waitok
return self.wait('ok',timeout)
File "d:\github\cartman\cartman\grbl.py", line 71, in wait
self.errorfilter(line) # check to see if any errors were returned
File "d:\github\cartman\cartman\grbl.py", line 106, in errorfilter
eid, errors[eid]))
Exception: (grbl) ERROR:8(Grbl '$' command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job.)"
在尝试调试 5 小时并阅读所有相关问题 2 小时后,我放弃了。
我还实现了 JOG_CANCEL,就像在各种问题中所说的那样,它有它的问题。但现在即使不使用 JOG_CANCEL 也会出现问题。
代码位于:
https ://github.com/ctmakro/cartman
使用箭头键移动机器(使用 pynput 库,在 Windows 上测试)。四处走走。以不可忽略的概率,它会像上图那样破裂。
我还推测这是由于我遗漏了几个
oks,从而填满了串行接收缓冲区。会做更多的实验。