注释
是的,如果您将文件作为 $c 发送并且它有错误 33 或 20(或可能任何错误),这绝对只是一个问题。 |
前几天我注意到这一点,当流由于错误而暂停时,grbl 处于 |
我建议你让它在弹出警报后取消流。运营商。修复它并再次解析它以查看。如果仍然有错误,它会显示出来。冲洗并重复直到他们放弃或正确解析🤗
|
可以确认这发生在 Sep10 版本上 |
这个错误一直存在很长时间。 |
@breiler我认为这只是问题的一个表象。诸如不受支持的 gcode 之类的错误也会导致流媒体暂停,但在这种情况下,不需要重置。 我在 UGS 中处理错误的方式并不理想。这个过程是:
第 3 步在检查模式下无法正常工作。从您的屏幕截图中,您可以看到通信器已暂停,但控制器没有。这样做的主要原因是 UGS 依赖 GRBL 来指示它正在发送/空闲/等,并且这些状态不会在检查模式下更新。 我知道有几种方法可以改进:
|
我对我引发的软限制错误感到有些困惑。GRBL 告诉我必须进行软重置。在发送重置命令之前,控制器是否应该从暂停状态恢复? |
GRBL 有不同类别的错误。当达到软限制时,GRBL 决定状态不再有效并且无法恢复。所以你是正确的,必须重置 GRBL 才能继续。UGS 在非检查模式下也不会真正处理这种情况,您可以继续尝试慢跑,并且会不断收到错误弹出窗口。 然后是不太严重的错误,如解析错误或无效的 gcode 命令。在这些情况下,GRBL 可以通过跳过命令来恢复。在许多工作流程中,这很常见,例如,我使用的一个 CAM 程序输入了换刀命令 ( |
就这样我明白了。=) 因此,通过始终暂停 Communicator 并让 Controller 知道,我们可以让 Controller 决定错误的严重性。有些需要重置,有些可以像在 skip 命令中那样处理。 |
这是一个棘手的问题。以下是有关错误处理线的一些背景信息:Grbl-v1.1-Interface#g-code-error-handling 控制器现在实际上没有意见。它只是根据通信器是否暂停来更新其状态。使事情变得更复杂的是,在某些情况下,通信器即使在不需要时也会暂停(即程序中的最后一个命令或手动命令)。 主要思想是,当发生错误时,程序会停止,并且应该为用户提供足够的上下文来决定接下来会发生什么。 |
我会看看它是否尝试从您描述的通信器创建一个新的暂停事件。 但是,我的 PR 仍然是正确的,对吗?软重置应该重置通信器的内部状态? |
我认为你是对的,我会合并到那个 PR |
所以我对此进行了深入研究。 我认为在使用检查模式时最好使用单步执行。我认为因为控制器比响应处理更快,所以当发生错误时它已经开始发送下一个命令。当我们通过暂停机器来处理错误时,它开始报告已经流式传输到控制器的消息的所有错误。 我认为部分解决方案是,当我们在检查模式下启动流时,控制器应该切换到单步执行,而当退出到正常模式时,它应该使用在设置中选择的步进模式。 我想知道 enum 应用程序的其他领域将从中受益。我们有几个地方可以查看状态字符串以确定控制器所处的状态。例如 |
我同意所有这些。拥有 另一个复杂性是 UGS 仍然支持手动管理 GUI 状态的旧版本 GRBL。此模式切换为 /**
* Indicator to abstract GUIBackend implementation that the contract class
* will handle ALL state change events. When this returns true it means
* things like completing the final command in a stream will not
* automatically re-enable buttons.
*/
Boolean handlesAllStateChangeEvents();
|
你是对的,现在不是做这么大的改变的时候,应该逐渐增加。 现在,正如您所指出的那样,要使这项工作进行很多更改。它现在应该在发生错误时暂停并将此事件发送到 GUIBackend。当进入检查模式时,我们切换到单步执行,当我们进入“正常”模式时切换回来。 我现在计算缓冲通信器中的所有命令(活动、缓冲、下一个命令)。注意到我们经常在缓冲区中有剩余内容时挂起。 请看一下代码。要重现该问题,您可以使用此 gcode:
|
我已经使用 GRBL 0.9j 对其进行了测试,问题似乎也已解决。 |
@jahnj0584这些更改现在应该在夜间构建中可用。如果您有时间,如果您能确认问题已经解决,我将不胜感激。 |
今晚我完成这项工作后,我会检查一下。 |
我正在关闭它,因为我无法再重现它。 |
将 grbl 设置为 $c。发送一个因错误 3 而失败的文件,或者它已经尝试解决的任何问题。

即使文件已完成,软重置仍然不会让我点击发送,因为它“正在流式传输”。如果您执行 $x 或软重置,它什么都不做。断开连接然后再次连接会让您返回,但点动控制被禁用。您必须重新启动程序才能解决此问题。